From 66bf0099846ecccef6ab726e1ceb642706977196 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 29 Mar 2005 23:15:54 +0000 Subject: [PATCH 1/1] Made wxConvBrokenFileNames public. Made use of it from GTK+'s wxApp. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/app.h | 6 ++++++ include/wx/gtk1/app.h | 6 ++++++ src/common/strconv.cpp | 29 +++-------------------------- src/gtk/app.cpp | 11 +++++++++++ src/gtk1/app.cpp | 11 +++++++++++ 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/include/wx/gtk/app.h b/include/wx/gtk/app.h index d4671dd320..d80afdb2fd 100644 --- a/include/wx/gtk/app.h +++ b/include/wx/gtk/app.h @@ -16,6 +16,7 @@ #include "wx/frame.h" #include "wx/icon.h" +#include "wx/strconv.h" //----------------------------------------------------------------------------- // classes @@ -67,6 +68,11 @@ public: // 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 diff --git a/include/wx/gtk1/app.h b/include/wx/gtk1/app.h index d4671dd320..d80afdb2fd 100644 --- a/include/wx/gtk1/app.h +++ b/include/wx/gtk1/app.h @@ -16,6 +16,7 @@ #include "wx/frame.h" #include "wx/icon.h" +#include "wx/strconv.h" //----------------------------------------------------------------------------- // classes @@ -67,6 +68,11 @@ public: // 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 diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index e502652057..a43f43550f 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -360,29 +360,12 @@ size_t wxMBConvLibc::WC2MB(char *buf, const wchar_t *psz, size_t n) const 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 @@ -429,7 +412,7 @@ wxConvBrokenFileNames::WC2MB(char *outputBuf, return m_conv->WC2MB( outputBuf, psz, outputSize ); } -#endif // __WXGTK20__ +#endif // ---------------------------------------------------------------------------- // UTF-7 @@ -2764,10 +2747,6 @@ static wxCSConv wxConvISO8859_1Obj(wxFONTENCODING_ISO8859_1); 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; @@ -2777,8 +2756,6 @@ WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent = &wxConvLibcObj; WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvFileName = & #ifdef __WXOSX__ wxConvUTF8Obj; -#elif __WXGTK20__ - wxConvBrokenFileNamesObj; #else wxConvLibcObj; #endif diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 6b9ddf198c..dbe83542dc 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -606,6 +606,12 @@ bool wxApp::Initialize(int& argc, wxChar **argv) 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; @@ -680,6 +686,11 @@ bool wxApp::Initialize(int& argc, wxChar **argv) void wxApp::CleanUp() { +#ifdef __WXGTK20__ + delete m_convBrokenFileNames; + wxConvFileName = m_oldConvFileName; +#endif + gdk_threads_leave(); wxAppBase::CleanUp(); diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 6b9ddf198c..dbe83542dc 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -606,6 +606,12 @@ bool wxApp::Initialize(int& argc, wxChar **argv) 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; @@ -680,6 +686,11 @@ bool wxApp::Initialize(int& argc, wxChar **argv) void wxApp::CleanUp() { +#ifdef __WXGTK20__ + delete m_convBrokenFileNames; + wxConvFileName = m_oldConvFileName; +#endif + gdk_threads_leave(); wxAppBase::CleanUp(); -- 2.45.2