X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..9015d579c839cb0676c75446d3b6bffd0623e970:/src/univ/menu.cpp diff --git a/src/univ/menu.cpp b/src/univ/menu.cpp index eaf34b8f9e..571761f561 100644 --- a/src/univ/menu.cpp +++ b/src/univ/menu.cpp @@ -1114,13 +1114,6 @@ void wxMenu::OnItemAdded(wxMenuItem *item) #if wxUSE_ACCEL AddAccelFor(item); #endif // wxUSE_ACCEL - - // the submenus of a popup menu should have the same invoking window as it - // has - if ( m_invokingWindow && item->IsSubMenu() ) - { - item->GetSubMenu()->SetInvokingWindow(m_invokingWindow); - } } void wxMenu::EndRadioGroup() @@ -1231,45 +1224,7 @@ void wxMenu::Detach() wxWindow *wxMenu::GetRootWindow() const { - if ( GetMenuBar() ) - { - // simple case - a normal menu attached to the menubar - return GetMenuBar(); - } - - // we're a popup menu but the trouble is that only the top level popup menu - // has a pointer to the invoking window, so we must walk up the menu chain - // if needed - wxWindow *win = GetInvokingWindow(); - if ( win ) - { - // we already have it - return win; - } - - wxMenu *menu = GetParent(); - while ( menu ) - { - // We are a submenu of a menu of a menubar - if (menu->GetMenuBar()) - return menu->GetMenuBar(); - - win = menu->GetInvokingWindow(); - if ( win ) - break; - - menu = menu->GetParent(); - } - - // we're probably going to crash in the caller anyhow, but try to detect - // this error as soon as possible - wxASSERT_MSG( win, wxT("menu without any associated window?") ); - - // also remember it in this menu so that we don't have to search for it the - // next time - wxConstCast(this, wxMenu)->m_invokingWindow = win; - - return win; + return GetMenuBar() ? GetMenuBar() : GetInvokingWindow(); } wxRenderer *wxMenu::GetRenderer() const @@ -1338,12 +1293,10 @@ void wxMenu::OnDismiss(bool dismissParent) } else // popup menu { - wxCHECK_RET( m_invokingWindow, wxT("what kind of menu is this?") ); + wxWindow * const win = GetInvokingWindow(); + wxCHECK_RET( win, wxT("what kind of menu is this?") ); - m_invokingWindow->DismissPopupMenu(); - - // Why reset it here? We need it for sending the event to... - // SetInvokingWindow(NULL); + win->DismissPopupMenu(); } } } @@ -2420,8 +2373,6 @@ void wxMenuBar::PopupCurrentMenu(bool selectFirst) // item, not to the right of it wxRect rectItem = GetItemRect(m_current); - m_menuShown->SetInvokingWindow(m_frameLast); - m_menuShown->Popup(ClientToScreen(rectItem.GetPosition()), wxSize(0, rectItem.GetHeight()), selectFirst); @@ -2546,10 +2497,6 @@ bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y) Update(); #endif // 0 - menu->SetInvokingWindow(this); - - // wxLogDebug( "Name of invoking window %s", menu->GetInvokingWindow()->GetName().c_str() ); - menu->Popup(ClientToScreen(wxPoint(x, y)), wxSize(0,0)); // this is not very useful if the menu was popped up because of the mouse @@ -2572,8 +2519,6 @@ bool wxWindow::DoPopupMenu(wxMenu *menu, int x, int y) // remove the handler PopEventHandler(true /* delete it */); - menu->SetInvokingWindow(NULL); - #ifdef __WXMSW__ SetCursor(cursorOld); #endif // __WXMSW__