]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/menu.cpp
applied patch for compilation with gcc 3.0
[wxWidgets.git] / src / msw / menu.cpp
index bf7b961b17c58a2e51f2f9cf0c31966dde2c285a..b35727d9a8f4f90732b2a28963ef71754a91acc5 100644 (file)
@@ -273,7 +273,7 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
 #endif // __WIN32__
 
         // if we're already attached to the menubar, we must update it
 #endif // __WIN32__
 
         // if we're already attached to the menubar, we must update it
-        if ( IsAttached() )
+        if ( IsAttached() && m_menuBar->IsAttached() )
         {
             m_menuBar->Refresh();
         }
         {
             m_menuBar->Refresh();
         }
@@ -326,7 +326,7 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
         wxLogLastError(wxT("RemoveMenu"));
     }
 
         wxLogLastError(wxT("RemoveMenu"));
     }
 
-    if ( IsAttached() )
+    if ( IsAttached() && m_menuBar->IsAttached() )
     {
         // otherwise, the chane won't be visible
         m_menuBar->Refresh();
     {
         // otherwise, the chane won't be visible
         m_menuBar->Refresh();
@@ -434,7 +434,13 @@ bool wxMenu::MSWCommand(WXUINT WXUNUSED(param), WXWORD id)
         wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED);
         event.SetEventObject( this );
         event.SetId( id );
         wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED);
         event.SetEventObject( this );
         event.SetId( id );
-        event.SetInt( id );
+
+        // VZ: previosuly, the command int was set to id too which was quite
+        //     useless anyhow (as it could be retrieved using GetId()) and
+        //     uncompatible with wxGTK, so now we use the command int instead
+        //     to pass the checked status
+        event.SetInt(::GetMenuState(GetHmenu(), id, MF_BYCOMMAND) & MF_CHECKED);
+
         ProcessCommand(event);
     }
 
         ProcessCommand(event);
     }
 
@@ -552,11 +558,9 @@ void wxMenuBar::Refresh()
 
 WXHMENU wxMenuBar::Create()
 {
 
 WXHMENU wxMenuBar::Create()
 {
-    if (m_hMenu != 0 )
+    if ( m_hMenu != 0 )
         return m_hMenu;
 
         return m_hMenu;
 
-    wxCHECK_MSG( !m_hMenu, TRUE, wxT("menubar already created") );
-
     m_hMenu = (WXHMENU)::CreateMenu();
 
     if ( !m_hMenu )
     m_hMenu = (WXHMENU)::CreateMenu();
 
     if ( !m_hMenu )