]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/menucmn.cpp
Allow wx parents a chance to handle events fired by non-wx children. (i.e. wxActiveX...
[wxWidgets.git] / src / common / menucmn.cpp
index a423b41f9bba4e834dbf7b60a62a43f9d7033dab..edf51cab54367c1947d7253eac012983dcfb74ba 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        common/menucmn.cpp
+// Name:        src/common/menucmn.cpp
 // Purpose:     wxMenu and wxMenuBar methods common to all ports
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "menubase.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -44,8 +40,8 @@
 
 #include "wx/listimpl.cpp"
 
-WX_DEFINE_LIST(wxMenuList);
-WX_DEFINE_LIST(wxMenuItemList);
+WX_DEFINE_LIST(wxMenuList)
+WX_DEFINE_LIST(wxMenuItemList)
 
 // ============================================================================
 // implementation
@@ -193,7 +189,7 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
                         keyCode = WXK_HOME;
                     else if ( current == wxT("END") )
                         keyCode = WXK_END;
-                    else if ( current == wxT("SPACE") )
+                    else if ( current == wxT("SPACE") || current == _("SPACE") )
                         keyCode = WXK_SPACE;
                     else if ( current == wxT("TAB") )
                         keyCode = WXK_TAB;
@@ -219,8 +215,6 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
                         keyCode = WXK_SNAPSHOT;
                     else if ( current == wxT("HELP") )
                         keyCode = WXK_HELP;
-                    else if ( current == wxT("HELP") )
-                        keyCode = WXK_HELP;
                     else if ( current == wxT("ADD") )
                         keyCode = WXK_ADD;
                     else if ( current == wxT("SEPARATOR") )
@@ -289,14 +283,14 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label)
                         keyCode = WXK_WINDOWS_LEFT;
                     else if ( current == wxT("WINDOWS_RIGHT") )
                         keyCode = WXK_WINDOWS_RIGHT;
-                     else if ( current == wxT("WINDOWS_MENU") )
+                    else if ( current == wxT("WINDOWS_MENU") )
                         keyCode = WXK_WINDOWS_MENU;
                     else if ( current == wxT("COMMAND") )
                         keyCode = WXK_COMMAND;
-                    else if ( current.Left(3) == wxT("KP_") && wxIsdigit(current[3U]) ) {
-                    keyCode = WXK_NUMPAD0 + wxAtoi(current.c_str() + 3);  }
-                    else if ( current.Left(7) == wxT("SPECIAL") && wxIsdigit(current[7U]) ) {
-                    keyCode = WXK_SPECIAL1 + wxAtoi(current.c_str() + 7) - 1;  }
+                    else if ( current.Left(3) == wxT("KP_") && wxIsdigit(current[3U]) )
+                        keyCode = WXK_NUMPAD0 + wxAtoi(current.c_str() + 3);
+                    else if ( current.Left(7) == wxT("SPECIAL") && wxIsdigit(current[7U]) )
+                        keyCode = WXK_SPECIAL1 + wxAtoi(current.c_str() + 7) - 1;
                     else
                     {
                         wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."),
@@ -690,7 +684,7 @@ bool wxMenuBase::SendEvent(int id, int checked)
     bool processed = false;
 
     // Try the menu's event handler
-    if ( !processed )
+    // if ( !processed )
     {
         wxEvtHandler *handler = GetEventHandler();
         if ( handler )
@@ -1064,4 +1058,21 @@ wxString wxMenuBarBase::GetHelpString(int id) const
     return item->GetHelp();
 }
 
+void wxMenuBarBase::UpdateMenus( void )
+{
+    wxEvtHandler* source;
+    wxMenu* menu;
+    int nCount = GetMenuCount();
+    for (int n = 0; n < nCount; n++)
+    {
+        menu = GetMenu( n );
+        if (menu != NULL)
+        {
+            source = menu->GetEventHandler();
+            if (source != NULL)
+                menu->UpdateUI( source );
+        }
+    }
+}
+
 #endif // wxUSE_MENUS