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
This commit is contained in:
Włodzimierz Skiba
2004-11-22 12:36:07 +00:00
parent 18591f2f81
commit 9f9f75b380

View File

@@ -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
{