]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/app.cpp
use SetMenuItemInfo() to update the item label to avoid reseting its bitmap and so...
[wxWidgets.git] / src / msw / app.cpp
index 00f768bf6b4bf5b66bced1c76581ef6fb0f626ea..eccd8787f485a0a28cd61aab925bb9d47287fc6b 100644 (file)
 extern void wxSetKeyboardHook(bool doIt);
 #endif
 
-namespace
-{
-
+// because of mingw32 4.3 bug this struct can't be inside the namespace below:
+// see http://article.gmane.org/gmane.comp.lib.wxwidgets.devel/110282
 struct ClassRegInfo
 {
     // the base name of the class: this is used to construct the unique name in
@@ -131,6 +130,9 @@ struct ClassRegInfo
              regnameNR;
 };
 
+namespace
+{
+
 wxVector<ClassRegInfo> gs_regClassesInfo;
 
 } // anonymous namespace
@@ -654,7 +656,7 @@ const wxChar *wxApp::GetRegisteredClassName(const wxChar *name,
     for ( size_t n = 0; n < count; n++ )
     {
         if ( gs_regClassesInfo[n].basename == name )
-            return gs_regClassesInfo[n].regname;
+            return gs_regClassesInfo[n].regname.c_str();
     }
 
     // we need to register this class
@@ -696,7 +698,7 @@ const wxChar *wxApp::GetRegisteredClassName(const wxChar *name,
     {
         wxLogLastError(wxString::Format(wxT("RegisterClass(%s)"),
                        regClass.regname));
-        ::UnregisterClass(regClass.regname, wxhInstance);
+        ::UnregisterClass(regClass.regname.c_str(), wxhInstance);
         return NULL;
     }
 
@@ -728,13 +730,13 @@ void wxApp::UnregisterWindowClasses()
     for ( size_t n = 0; n < count; n++ )
     {
         const ClassRegInfo& regClass = gs_regClassesInfo[n];
-        if ( !::UnregisterClass(regClass.regname, wxhInstance) )
+        if ( !::UnregisterClass(regClass.regname.c_str(), wxhInstance) )
         {
             wxLogLastError(wxString::Format(wxT("UnregisterClass(%s)"),
                            regClass.regname));
         }
 
-        if ( !::UnregisterClass(regClass.regnameNR, wxhInstance) )
+        if ( !::UnregisterClass(regClass.regnameNR.c_str(), wxhInstance) )
         {
             wxLogLastError(wxString::Format(wxT("UnregisterClass(%s)"),
                            regClass.regnameNR));
@@ -917,10 +919,7 @@ int wxApp::GetComCtl32Version()
         // depending on the OS version and the presence of the manifest, it can
         // be either v5 or v6 and instead of trying to guess it just get the
         // handle of the already loaded version
-        wxDynamicLibrary dllComCtl32(_T("comctl32.dll"),
-                                     wxDL_VERBATIM |
-                                     wxDL_QUIET |
-                                     wxDL_GET_LOADED);
+        wxLoadedDLL dllComCtl32(_T("comctl32.dll"));
         if ( !dllComCtl32.IsLoaded() )
         {
             s_verComCtl32 = 0;
@@ -958,9 +957,6 @@ int wxApp::GetComCtl32Version()
                 }
             }
         }
-
-        // we shouldn't unload it here as we didn't really load it above
-        dllComCtl32.Detach();
     }
 
     return s_verComCtl32;
@@ -1021,10 +1017,7 @@ int wxApp::GetShell32Version()
 
 bool wxApp::Yield(bool onlyIfNeeded)
 {
-    // MT-FIXME
-    static bool s_inYield = false;
-
-    if ( s_inYield )
+    if ( m_isInsideYield )
     {
         if ( !onlyIfNeeded )
         {
@@ -1035,8 +1028,8 @@ bool wxApp::Yield(bool onlyIfNeeded)
     }
 
     // set the flag and don't forget to reset it before returning
-    s_inYield = true;
-    wxON_BLOCK_EXIT_SET(s_inYield, false);
+    m_isInsideYield = true;
+    wxON_BLOCK_EXIT_SET(m_isInsideYield, false);
 
 
 #if wxUSE_LOG