]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/framecmn.cpp
fix from Robert
[wxWidgets.git] / src / common / framecmn.cpp
index c2f9f21f046c6cc4322b748eb289085e9c3f94cc..c7678d5b5f55afd743a4735ff53594202680a002 100644 (file)
@@ -129,7 +129,7 @@ wxPoint wxFrameBase::GetClientAreaOrigin() const
     wxPoint pt(0, 0);
 
 #if wxUSE_TOOLBAR
     wxPoint pt(0, 0);
 
 #if wxUSE_TOOLBAR
-    if ( GetToolBar() )
+    if ( GetToolBar() && GetToolBar()->IsShown() )
     {
         int w, h;
         GetToolBar()->GetSize(& w, & h);
     {
         int w, h;
         GetToolBar()->GetSize(& w, & h);
@@ -196,15 +196,17 @@ bool wxFrameBase::ProcessCommand(int id)
     if ( !bar )
         return FALSE;
 
     if ( !bar )
         return FALSE;
 
+    wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id);
+    commandEvent.SetEventObject(this);
+
     wxMenuItem *item = bar->FindItem(id);
     if ( item && item->IsCheckable() )
     {
         item->Toggle();
     wxMenuItem *item = bar->FindItem(id);
     if ( item && item->IsCheckable() )
     {
         item->Toggle();
-    }
 
 
-    wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id);
-    commandEvent.SetInt(id);
-    commandEvent.SetEventObject(this);
+        // use the new value
+        commandEvent.SetInt(item->IsChecked());
+    }
 
     return GetEventHandler()->ProcessEvent(commandEvent);
 }
 
     return GetEventHandler()->ProcessEvent(commandEvent);
 }
@@ -284,29 +286,7 @@ void wxFrameBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
 void wxFrameBase::OnMenuHighlight(wxMenuEvent& event)
 {
 #if wxUSE_STATUSBAR
 void wxFrameBase::OnMenuHighlight(wxMenuEvent& event)
 {
 #if wxUSE_STATUSBAR
-    if ( GetStatusBar() )
-    {
-        // if no help string found, we will clear the status bar text
-        wxString helpString;
-
-        int menuId = event.GetMenuId();
-        if ( menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */ )
-        {
-            wxMenuBar *menuBar = GetMenuBar();
-            if ( menuBar )
-            {
-                // it's ok if we don't find the item because it might belong
-                // to the popup menu
-                wxMenuItem *item = menuBar->FindItem(menuId);
-                if ( item )
-                    helpString = item->GetHelp();
-            }
-        }
-
-        // set status text even if the string is empty - this will at least
-        // remove the string from the item which was previously selected
-        SetStatusText(helpString);
-    }
+    (void)ShowMenuHelp(GetStatusBar(), event.GetMenuId());
 #endif // wxUSE_STATUSBAR
 }
 
 #endif // wxUSE_STATUSBAR
 }
 
@@ -372,6 +352,34 @@ void wxFrameBase::SetStatusWidths(int n, const int widths_field[] )
     PositionStatusBar();
 }
 
     PositionStatusBar();
 }
 
+bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId)
+{
+    if ( !statbar )
+        return FALSE;
+
+    // if no help string found, we will clear the status bar text
+    wxString helpString;
+
+    if ( menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */ )
+    {
+        wxMenuBar *menuBar = GetMenuBar();
+        if ( menuBar )
+        {
+            // it's ok if we don't find the item because it might belong
+            // to the popup menu
+            wxMenuItem *item = menuBar->FindItem(menuId);
+            if ( item )
+                helpString = item->GetHelp();
+        }
+    }
+
+    // set status text even if the string is empty - this will at least
+    // remove the string from the item which was previously selected
+    statbar->SetStatusText(helpString);
+
+    return !helpString.IsEmpty();
+}
+
 #endif // wxUSE_STATUSBAR
 
 // ----------------------------------------------------------------------------
 #endif // wxUSE_STATUSBAR
 
 // ----------------------------------------------------------------------------