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:
@@ -136,7 +136,7 @@ public:
|
|||||||
virtual void OnDismiss();
|
virtual void OnDismiss();
|
||||||
|
|
||||||
// called when a submenu is dismissed
|
// called when a submenu is dismissed
|
||||||
void OnSubmenuDismiss() { m_hasOpenSubMenu = false; }
|
void OnSubmenuDismiss(bool dismissParent);
|
||||||
|
|
||||||
// get the currently selected item (may be NULL)
|
// get the currently selected item (may be NULL)
|
||||||
wxMenuItem *GetCurrentItem() const
|
wxMenuItem *GetCurrentItem() const
|
||||||
@@ -358,7 +358,7 @@ void wxPopupMenuWindow::ChangeCurrent(wxMenuItemList::compatibility_iterator nod
|
|||||||
if ( item->IsSubMenu() && item->GetSubMenu()->IsShown() )
|
if ( item->IsSubMenu() && item->GetSubMenu()->IsShown() )
|
||||||
{
|
{
|
||||||
item->GetSubMenu()->Dismiss();
|
item->GetSubMenu()->Dismiss();
|
||||||
OnSubmenuDismiss();
|
OnSubmenuDismiss( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshItem(item);
|
RefreshItem(item);
|
||||||
@@ -463,7 +463,7 @@ void wxPopupMenuWindow::Dismiss()
|
|||||||
wxCHECK_RET( win, _T("opened submenu is not opened?") );
|
wxCHECK_RET( win, _T("opened submenu is not opened?") );
|
||||||
|
|
||||||
win->Dismiss();
|
win->Dismiss();
|
||||||
OnSubmenuDismiss();
|
OnSubmenuDismiss( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
wxPopupTransientWindow::Dismiss();
|
wxPopupTransientWindow::Dismiss();
|
||||||
@@ -476,6 +476,15 @@ void wxPopupMenuWindow::OnDismiss()
|
|||||||
HandleDismiss(true);
|
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)
|
void wxPopupMenuWindow::HandleDismiss(bool dismissParent)
|
||||||
{
|
{
|
||||||
ResetCurrent();
|
ResetCurrent();
|
||||||
@@ -1307,7 +1316,7 @@ void wxMenu::OnDismiss(bool dismissParent)
|
|||||||
wxPopupMenuWindow *win = m_menuParent->m_popupMenu;
|
wxPopupMenuWindow *win = m_menuParent->m_popupMenu;
|
||||||
if ( win )
|
if ( win )
|
||||||
{
|
{
|
||||||
win->OnSubmenuDismiss();
|
win->OnSubmenuDismiss( true );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user