diff --git a/samples/mdi/mdi.cpp b/samples/mdi/mdi.cpp index 726bc8f18f..657ac0b338 100644 --- a/samples/mdi/mdi.cpp +++ b/samples/mdi/mdi.cpp @@ -112,10 +112,14 @@ wxBEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_MENU_HIGHLIGHT(wxID_ABOUT, MyCanvas::OnMenuHighlight) EVT_MENU_HIGHLIGHT(MDI_REFRESH, MyCanvas::OnMenuHighlight) EVT_MENU_CLOSE(MyCanvas::OnMenuClose) + + EVT_UPDATE_UI(MDI_DISABLED_FROM_CANVAS, MyCanvas::OnUpdateUIDisable) wxEND_EVENT_TABLE() wxBEGIN_EVENT_TABLE(MyChild::EventHandler, wxEvtHandler) EVT_MENU(MDI_REFRESH, MyChild::EventHandler::OnRefresh) + + EVT_UPDATE_UI(MDI_DISABLED_FROM_CHILD, MyChild::OnUpdateUIDisable) wxEND_EVENT_TABLE() // =========================================================================== @@ -436,6 +440,8 @@ void MyCanvas::OnMenu(wxContextMenuEvent& event) { wxMenu menu; menu.Append(MDI_REFRESH, "&Refresh picture"); + menu.Append(MDI_DISABLED_FROM_CANVAS, "Item disabled by canvas"); + menu.Append(MDI_DISABLED_FROM_CHILD, "Item disabled by child"); PopupMenu(&menu, ScreenToClient(event.GetPosition())); } @@ -478,6 +484,9 @@ MyChild::MyChild(wxMDIParentFrame *parent) menuChild->Append(MDI_CHANGE_SIZE, "Resize frame\tCtrl-S"); } #if wxUSE_CLIPBOARD + menuChild->AppendSeparator(); + menuChild->Append(MDI_DISABLED_FROM_CANVAS, "Item not disabled by canvas"); + menuChild->Append(MDI_DISABLED_FROM_CHILD, "Item disabled by child"); menuChild->AppendSeparator(); menuChild->Append(wxID_PASTE, "Copy text from clipboard\tCtrl-V"); #endif // wxUSE_CLIPBOARD diff --git a/samples/mdi/mdi.h b/samples/mdi/mdi.h index 6c86e2bdf7..e9887164e8 100644 --- a/samples/mdi/mdi.h +++ b/samples/mdi/mdi.h @@ -73,6 +73,8 @@ private: void OnMenuHighlight(wxMenuEvent& event) { LogMenuHighlight(event); } void OnMenuClose(wxMenuEvent& event) { LogMenuOpenClose(event, "closed"); } + void OnUpdateUIDisable(wxUpdateUIEvent& event) { event.Enable(false); } + void OnMenu(wxContextMenuEvent& event); void OnEvent(wxMouseEvent& event); @@ -137,6 +139,7 @@ private: void OnMenuOpen(wxMenuEvent& event) { LogMenuOpenClose(event, "opened"); } void OnMenuHighlight(wxMenuEvent& event) { LogMenuHighlight(event); } void OnMenuClose(wxMenuEvent& event) { LogMenuOpenClose(event, "closed"); } + void OnUpdateUIDisable(wxUpdateUIEvent& event) { event.Enable(false); } void OnCloseWindow(wxCloseEvent& event); #if wxUSE_CLIPBOARD @@ -176,6 +179,8 @@ enum { MDI_FULLSCREEN = 100, MDI_REFRESH, + MDI_DISABLED_FROM_CANVAS, + MDI_DISABLED_FROM_CHILD, MDI_CHANGE_TITLE, MDI_CHANGE_POSITION, MDI_CHANGE_SIZE diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index 2588499bed..0793cd2ad1 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -410,12 +410,11 @@ void wxMDIParentFrame::DoMenuUpdates(wxMenu* menu) wxMDIChildFrame *child = GetActiveChild(); if ( child ) { - wxEvtHandler* source = child->GetEventHandler(); wxMenuBar* bar = child->GetMenuBar(); if (menu) { - menu->UpdateUI(source); + menu->UpdateUI(); } else { @@ -423,7 +422,7 @@ void wxMDIParentFrame::DoMenuUpdates(wxMenu* menu) { int nCount = bar->GetMenuCount(); for (int n = 0; n < nCount; n++) - bar->GetMenu(n)->UpdateUI(source); + bar->GetMenu(n)->UpdateUI(); } } }