]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/strconv.cpp
Fix wxListCtrl background colour bug Part I
[wxWidgets.git] / src / common / strconv.cpp
index c8207ca44e4fa48f52ecd9ecb4942c7fdc323565..677ad2714da717144cbda3cfc3f4c8cfb450d4c8 100644 (file)
@@ -42,6 +42,7 @@
 #include <string.h>
 #include <stdlib.h>
 
+#include "wx/module.h"
 #include "wx/strconv.h"
 
 // ----------------------------------------------------------------------------
 
 WXDLLEXPORT_DATA(wxMBConv *) wxConvCurrent = &wxConvLibc;
 
+class wxStrConvModule: public wxModule
+{
+public:
+    wxStrConvModule() : wxModule() { }
+    virtual bool OnInit() { return TRUE; }
+    virtual void OnExit()
+    {
+#if wxUSE_WCHAR_T
+        wxConvLocal.Clear();
+#endif
+    }
+
+    DECLARE_DYNAMIC_CLASS(wxStrConvModule)
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxStrConvModule, wxModule)
+
+
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
@@ -772,7 +791,7 @@ public:
                                      enc(wxFONTENCODING_SYSTEM)
     {
         if (name)
-            enc = wxTheFontMapper->CharsetToEncoding(name, FALSE);
+            enc = wxFontMapper::Get()->CharsetToEncoding(name, FALSE);
 
         m_ok = m2w.Init(enc, wxFONTENCODING_UNICODE) &&
                w2m.Init(wxFONTENCODING_UNICODE, enc);
@@ -821,7 +840,7 @@ static wxCharacterSet *wxGetCharacterSet(const wxChar *name)
 {
     // check for the special case of ASCII charset
 #if wxUSE_FONTMAP
-    if ( wxTheFontMapper->CharsetToEncoding(name) == wxFONTENCODING_DEFAULT )
+    if ( wxFontMapper::Get()->CharsetToEncoding(name) == wxFONTENCODING_DEFAULT )
 #else // wxUSE_FONTMAP
     if ( !name )
 #endif // wxUSE_FONTMAP/!wxUSE_FONTMAP
@@ -898,8 +917,17 @@ wxCSConv::wxCSConv(const wxChar *charset)
 
 wxCSConv::~wxCSConv()
 {
-    free(m_name);
-    delete m_cset;
+    Clear();
+}
+
+void wxCSConv::Clear()
+{
+    if (m_name)
+        free(m_name);
+    if (m_cset)
+        delete m_cset;
+    m_name = NULL;
+    m_cset = NULL;
 }
 
 void wxCSConv::SetName(const wxChar *charset)