From b8b7568ce5810af2ddf9b40f2e0aabe323c2d93f Mon Sep 17 00:00:00 2001 From: Perry Hugh Date: Tue, 5 Mar 2019 14:39:40 -0800 Subject: [PATCH] Correct odd toggling menu behavior. --- apps/openmw/mwinput/inputmanagerimp.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index b904dbcb7..e0c16166f 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -1146,12 +1146,21 @@ namespace MWInput bool state = MWBase::Environment::get().getStateManager()->getState() == MWBase::StateManager::State_NoGame; MWGui::GuiMode mode = MWBase::Environment::get().getWindowManager()->getMode(); - if (mode == MWGui::GM_Settings || (!state && mode == MWGui::GM_MainMenu)) + if (mode == MWGui::GM_MainMenu) { if (MyGUI::InputManager::getInstance().isModalAny()) - MWBase::Environment::get().getWindowManager()->exitCurrentModal(); - MWBase::Environment::get().getWindowManager()->popGuiMode(); + { + while (MyGUI::InputManager::getInstance().isModalAny()) + { + MWBase::Environment::get().getWindowManager()->exitCurrentModal(); + } + } + else if (!state) + MWBase::Environment::get().getWindowManager()->popGuiMode(); } + else if (mode == MWGui::GM_Settings) + MWBase::Environment::get().getWindowManager()->popGuiMode(); + if(state || mode == MWGui::GM_MainMenu) return;