]> git.saurik.com Git - wxWidgets.git/commitdiff
Postpone initialization of owner-drawn menu metrics.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 19 Mar 2010 09:57:15 +0000 (09:57 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 19 Mar 2010 09:57:15 +0000 (09:57 +0000)
Doing it during globals initialization time didn't work and could even result
in a crash due to dereferencing a NULL wxTheApp pointer.

Closes #11806.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/menuitem.cpp

index 83d879ce26ea2067c2ba56a3d3d6f9f831401e26..a5233965bf452ffd04ff483ea6033ebb648c279c 100644 (file)
@@ -241,6 +241,15 @@ public:
 
     static const MenuDrawData* Get()
     {
+        // notice that s_menuData can't be created as a global variable because
+        // it needs a window to initialize and no windows exist at the time of
+        // globals initialization yet
+        if ( !ms_instance )
+        {
+            static MenuDrawData s_menuData;
+            ms_instance = &s_menuData;
+        }
+
     #if wxUSE_UXTHEME
         bool theme = MenuLayout() == FullTheme;
         if ( ms_instance->Theme != theme )
@@ -251,7 +260,6 @@ public:
 
     MenuDrawData()
     {
-        ms_instance = this;
         Init();
     }
 
@@ -299,8 +307,6 @@ private:
 
 MenuDrawData* MenuDrawData::ms_instance = NULL;
 
-MenuDrawData s_menuData;
-
 void MenuDrawData::Init()
 {
 #if wxUSE_UXTHEME