diff --git a/Engine/source/gui/editor/guiMenuBar.cpp b/Engine/source/gui/editor/guiMenuBar.cpp index cae69d291..bfef0f04d 100644 --- a/Engine/source/gui/editor/guiMenuBar.cpp +++ b/Engine/source/gui/editor/guiMenuBar.cpp @@ -506,6 +506,16 @@ void GuiMenuBar::onAction() mouseDownMenu->popupMenu->showPopup(root, pos.x, pos.y); } +void GuiMenuBar::closeMenu() +{ + if(mouseDownMenu) + mouseDownMenu->popupMenu->hidePopup(); + + mouseOverMenu = NULL; + mouseDownMenu = NULL; + mMouseInMenu = false; +} + // Process a tick void GuiMenuBar::processTick() { diff --git a/Engine/source/gui/editor/guiPopupMenuCtrl.cpp b/Engine/source/gui/editor/guiPopupMenuCtrl.cpp index 2a72c09b0..e9a9fcf33 100644 --- a/Engine/source/gui/editor/guiPopupMenuCtrl.cpp +++ b/Engine/source/gui/editor/guiPopupMenuCtrl.cpp @@ -247,6 +247,10 @@ void GuiPopupMenuTextListCtrl::onMouseUp(const GuiEvent &event) { if (item->mEnabled) { + if(mMenuBar) + { + mMenuBar->closeMenu(); + } Con::executef(mPopup, "onSelectItem", Con::getIntArg(getSelectedCell().y), item->mText.isNotEmpty() ? item->mText : String("")); } }