#include "wx/frame.h"
#include "wx/icon.h"
+#include "wx/strconv.h"
//-----------------------------------------------------------------------------
// classes
// This returns the current visual: either that used by wxRootWindow
// or the XVisualInfo* for SGI.
GdkVisual *GetGdkVisual();
+
+#ifdef __WXGTK20__
+ wxConvBrokenFileNames *m_convBrokenFileNames;
+ wxMBConv *m_oldConvFileName;
+#endif
private:
// true if we're inside an assert modal dialog
#include "wx/frame.h"
#include "wx/icon.h"
+#include "wx/strconv.h"
//-----------------------------------------------------------------------------
// classes
// This returns the current visual: either that used by wxRootWindow
// or the XVisualInfo* for SGI.
GdkVisual *GetGdkVisual();
+
+#ifdef __WXGTK20__
+ wxConvBrokenFileNames *m_convBrokenFileNames;
+ wxMBConv *m_oldConvFileName;
+#endif
private:
// true if we're inside an assert modal dialog
return wxWC2MB(buf, psz, n);
}
-#ifdef __WXGTK20__
+#ifdef __UNIX__
// ----------------------------------------------------------------------------
-// wxConvBrokenFileNames is made for GTK2 in Unicode mode when
-// files are accidentally written in an encoding which is not
-// the system encoding. Typically, the system encoding will be
-// UTF8 but there might be files stored in ISO8859-1 on disk.
+// wxConvBrokenFileNames
// ----------------------------------------------------------------------------
-class wxConvBrokenFileNames : public wxMBConv
-{
-public:
- wxConvBrokenFileNames();
- virtual ~wxConvBrokenFileNames() { delete m_conv; }
-
- virtual size_t MB2WC(wchar_t *outputBuf, const char *psz, size_t outputSize) const;
- virtual size_t WC2MB(char *outputBuf, const wchar_t *psz, size_t outputSize) const;
-
-private:
- // the conversion object we forward to
- wxMBConv *m_conv;
-};
-
wxConvBrokenFileNames::wxConvBrokenFileNames()
{
// decide which conversion to use for the file names
return m_conv->WC2MB( outputBuf, psz, outputSize );
}
-#endif // __WXGTK20__
+#endif
// ----------------------------------------------------------------------------
// UTF-7
static wxMBConvUTF7 wxConvUTF7Obj;
static wxMBConvUTF8 wxConvUTF8Obj;
-#ifdef __WXGTK20__
- static wxConvBrokenFileNames wxConvBrokenFileNamesObj;
-#endif
-
WXDLLIMPEXP_DATA_BASE(wxMBConv&) wxConvLibc = wxConvLibcObj;
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvLocal = wxConvLocalObj;
WXDLLIMPEXP_DATA_BASE(wxCSConv&) wxConvISO8859_1 = wxConvISO8859_1Obj;
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvFileName = &
#ifdef __WXOSX__
wxConvUTF8Obj;
-#elif __WXGTK20__
- wxConvBrokenFileNamesObj;
#else
wxConvLibcObj;
#endif
wxConvCurrent = (wxMBConv*) NULL;
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+#ifdef __WXGTK20__
+ m_convBrokenFileNames = new wxConvBrokenFileNames;
+ m_oldConvFileName = wxConvFileName;
+ wxConvFileName = m_convBrokenFileNames;
+#endif
+
#if wxUSE_UNICODE
// gtk_init() wants UTF-8, not wchar_t, so convert
int i;
void wxApp::CleanUp()
{
+#ifdef __WXGTK20__
+ delete m_convBrokenFileNames;
+ wxConvFileName = m_oldConvFileName;
+#endif
+
gdk_threads_leave();
wxAppBase::CleanUp();
wxConvCurrent = (wxMBConv*) NULL;
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+#ifdef __WXGTK20__
+ m_convBrokenFileNames = new wxConvBrokenFileNames;
+ m_oldConvFileName = wxConvFileName;
+ wxConvFileName = m_convBrokenFileNames;
+#endif
+
#if wxUSE_UNICODE
// gtk_init() wants UTF-8, not wchar_t, so convert
int i;
void wxApp::CleanUp()
{
+#ifdef __WXGTK20__
+ delete m_convBrokenFileNames;
+ wxConvFileName = m_oldConvFileName;
+#endif
+
gdk_threads_leave();
wxAppBase::CleanUp();