-void wxFrame::OnIdle(wxIdleEvent& event)
-{
- DoMenuUpdates();
-}
-
-// Query app for menu item updates (called from OnIdle)
-void wxFrame::DoMenuUpdates(void)
-{
- wxMenuBar* bar = GetMenuBar();
- if (!bar)
- return;
-
- int i;
- for (i = 0; i < bar->m_menuCount; i++)
- {
- wxMenu* menu = bar->m_menus[i];
-
- DoMenuUpdates(menu);
- }
-}
-
-void wxFrame::DoMenuUpdates(wxMenu* menu)
-{
- wxNode* node = menu->m_menuItems.First();
- while (node)
- {
- wxMenuItem* item = (wxMenuItem*) node->Data();
- if ( !item->IsSeparator() )
- {
- wxWindowID id = item->GetId();
- wxUpdateUIEvent event(id);
- event.SetEventObject( this );
-
- if (GetEventHandler()->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());
- }
- node = node->Next();
- }
-}