]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/frame.cpp
Latest OS/2 changes broke xpmlib for MSW. Fixed.
[wxWidgets.git] / src / os2 / frame.cpp
index 4c15e005b44067674d5e793e1ed8d2b2370244ed..d697f9ca5d0be16d0a5b4c185179050d382732c2 100644 (file)
@@ -527,23 +527,25 @@ void wxFrame::SetMenuBar(
         return;
     }
 
-    wxCHECK_RET(!pMenuBar->GetFrame(), wxT("this menubar is already attached"));
+    m_frameMenuBar = NULL;
 
-    if (m_frameMenuBar)
-        delete m_frameMenuBar;
-
-    m_hMenu = pMenuBar->Create();
-    m_ulMenubarId = pMenuBar->GetMenubarId();
-    if (m_ulMenubarId != FID_MENU)
+    // Can set a menubar several times.
+    // TODO: how to prevent a memory leak if you have a currently-unattached
+    // menubar? wxWindows assumes that the frame will delete the menu (otherwise
+    // there are problems for MDI).
+    if (pMenuBar->GetHMenu())
     {
-        ::WinSetWindowUShort( m_hMenu
-                             ,QWS_ID
-                             ,(unsigned short)m_ulMenubarId
-                            );
+        m_hMenu = pMenuBar->GetHMenu();
     }
+    else
+    {
+        pMenuBar->Detach();
 
-    if (!m_hMenu)
-        return;
+        m_hMenu = pMenuBar->Create();
+
+        if (!m_hMenu)
+            return;
+    }
 
     InternalSetMenuBar();