]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/frame.cpp
adapted to mac
[wxWidgets.git] / src / mac / carbon / frame.cpp
index 59b57e6cb5e38ee1fb0fe618e6ee4aa373f541f8..ba1377151f40e3185e51fe84282bbaf4ad580c0d 100644 (file)
@@ -341,6 +341,56 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
 
 // Default resizing behaviour - if only ONE subwindow,
 // resize to client rectangle size
 
 // Default resizing behaviour - if only ONE subwindow,
 // resize to client rectangle size
+void wxFrame::OnIdle(wxIdleEvent& WXUNUSED(event) )
+{
+    DoMenuUpdates();
+}
+
+
+// update all menus
+void wxFrame::DoMenuUpdates()
+{
+    wxMenuBar* bar = GetMenuBar();
+
+    if ( bar != NULL )
+    {
+        int nCount = bar->GetMenuCount();
+        for (int n = 0; n < nCount; n++)
+            DoMenuUpdates(bar->GetMenu(n), (wxWindow*) NULL);
+    }
+}
+
+// update a menu and all submenus recursively
+void wxFrame::DoMenuUpdates(wxMenu* menu, wxWindow* WXUNUSED(focusWin))
+{
+    wxEvtHandler* evtHandler = GetEventHandler();
+    wxMenuItemList::Node* node = menu->GetMenuItems().GetFirst();
+    while (node)
+    {
+        wxMenuItem* item = node->GetData();
+        if ( !item->IsSeparator() )
+        {
+            wxWindowID id = item->GetId();
+            wxUpdateUIEvent event(id);
+            event.SetEventObject( this );
+
+            if (evtHandler->ProcessEvent(event))
+            {
+                if (event.GetSetText())
+                    menu->SetLabel(id, event.GetText());
+                if (event.GetSetChecked())
+                    menu->Check(id, event.GetChecked());
+                if (event.GetSetEnabled())
+                    menu->Enable(id, event.GetEnabled());
+            }
+
+            if (item->GetSubMenu())
+                DoMenuUpdates(item->GetSubMenu(), (wxWindow*) NULL);
+        }
+        node = node->GetNext();
+    }
+}
+
 void wxFrame::OnSize(wxSizeEvent& event)
 {
   // if we're using constraints - do use them
 void wxFrame::OnSize(wxSizeEvent& event)
 {
   // if we're using constraints - do use them
@@ -490,9 +540,9 @@ wxPoint wxFrame::GetClientAreaOrigin() const
     return pt;
 }
 
     return pt;
 }
 
-void wxFrame::GetClientSize(int *x, int *y) const
+void wxFrame::DoGetClientSize(int *x, int *y) const
 {
 {
-       wxWindow::GetClientSize( x , y ) ;
+       wxWindow::DoGetClientSize( x , y ) ;
 
   if ( GetStatusBar() )
   {
 
   if ( GetStatusBar() )
   {