From 9f9f75b380a9e69dc44f12da55a8df91ba5831f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?W=C5=82odzimierz=20Skiba?= Date: Mon, 22 Nov 2004 12:36:07 +0000 Subject: [PATCH] Fix the assert of not reset highlighted menu item pointer. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/univ/menu.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/univ/menu.cpp b/src/univ/menu.cpp index 730f6923c5..b6b0189e85 100644 --- a/src/univ/menu.cpp +++ b/src/univ/menu.cpp @@ -136,7 +136,7 @@ public: virtual void OnDismiss(); // called when a submenu is dismissed - void OnSubmenuDismiss() { m_hasOpenSubMenu = false; } + void OnSubmenuDismiss(bool dismissParent); // get the currently selected item (may be NULL) wxMenuItem *GetCurrentItem() const @@ -358,7 +358,7 @@ void wxPopupMenuWindow::ChangeCurrent(wxMenuItemList::compatibility_iterator nod if ( item->IsSubMenu() && item->GetSubMenu()->IsShown() ) { item->GetSubMenu()->Dismiss(); - OnSubmenuDismiss(); + OnSubmenuDismiss( false ); } RefreshItem(item); @@ -463,7 +463,7 @@ void wxPopupMenuWindow::Dismiss() wxCHECK_RET( win, _T("opened submenu is not opened?") ); win->Dismiss(); - OnSubmenuDismiss(); + OnSubmenuDismiss( false ); } wxPopupTransientWindow::Dismiss(); @@ -476,6 +476,15 @@ void wxPopupMenuWindow::OnDismiss() HandleDismiss(true); } +void wxPopupMenuWindow::OnSubmenuDismiss(bool dismissParent) +{ + m_hasOpenSubMenu = false; + + // we are closing whole menu so remove current highlight + if ( dismissParent ) + ResetCurrent(); +} + void wxPopupMenuWindow::HandleDismiss(bool dismissParent) { ResetCurrent(); @@ -1307,7 +1316,7 @@ void wxMenu::OnDismiss(bool dismissParent) wxPopupMenuWindow *win = m_menuParent->m_popupMenu; if ( win ) { - win->OnSubmenuDismiss(); + win->OnSubmenuDismiss( true ); } else { -- 2.45.2