From 88291f358fc8078b830c40c2836765925fa81b1c Mon Sep 17 00:00:00 2001 From: Walter Agazzi Date: Thu, 29 Dec 2022 16:25:40 +0100 Subject: [PATCH] BURIED: Clear _controlDown flag on GUI windows opening Prevents being stuck in fast mode, fixes TRAC #13584 --- engines/buried/buried.cpp | 4 ++++ engines/buried/gameui.cpp | 7 +++++-- engines/buried/scene_view.cpp | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/engines/buried/buried.cpp b/engines/buried/buried.cpp index 1b051c682fe..9ce151789a9 100644 --- a/engines/buried/buried.cpp +++ b/engines/buried/buried.cpp @@ -504,6 +504,10 @@ void BuriedEngine::pollForEvents() { window->postMessage(new RButtonUpMessage(window->convertPointToLocal(event.mouse), 0)); break; } + case Common::EVENT_MAINMENU: { + ((FrameWindow *)_mainWindow)->_controlDown = false; + break; + } default: break; } diff --git a/engines/buried/gameui.cpp b/engines/buried/gameui.cpp index 2feb3a8e429..026c15f5c7e 100644 --- a/engines/buried/gameui.cpp +++ b/engines/buried/gameui.cpp @@ -311,6 +311,7 @@ void GameUIWindow::onKeyUp(const Common::KeyState &key, uint flags) { case Common::KEYCODE_s: if ((key.flags & Common::KBD_CTRL) && cloakingDisabled && !interfaceMenuActive) { _vm->handleSaveDialog(); + ((FrameWindow *)_vm->_mainWindow)->_controlDown = false; } else if (_sceneViewWindow) _sceneViewWindow->sendMessage(new KeyUpMessage(key, flags)); break; @@ -318,13 +319,15 @@ void GameUIWindow::onKeyUp(const Common::KeyState &key, uint flags) { case Common::KEYCODE_l: if ((key.flags & Common::KBD_CTRL) && cloakingDisabled && !interfaceMenuActive) { _vm->handleRestoreDialog(); + ((FrameWindow *)_vm->_mainWindow)->_controlDown = false; } else if (_sceneViewWindow) _sceneViewWindow->sendMessage(new KeyUpMessage(key, flags)); break; case Common::KEYCODE_p: - if ((key.flags & Common::KBD_CTRL) && cloakingDisabled && !interfaceMenuActive) + if ((key.flags & Common::KBD_CTRL) && cloakingDisabled && !interfaceMenuActive) { _vm->pauseGame(); - else if (_sceneViewWindow) + ((FrameWindow *)_vm->_mainWindow)->_controlDown = false; + } else if (_sceneViewWindow) _sceneViewWindow->sendMessage(new KeyUpMessage(key, flags)); break; default: diff --git a/engines/buried/scene_view.cpp b/engines/buried/scene_view.cpp index b0d55af0076..fc6cfa69320 100644 --- a/engines/buried/scene_view.cpp +++ b/engines/buried/scene_view.cpp @@ -2296,6 +2296,7 @@ void SceneViewWindow::onKeyUp(const Common::KeyState &key, uint flags) { // Return to main menu if (_vm->runQuitDialog()) ((FrameWindow *)_vm->_mainWindow)->showMainMenu(); + ((FrameWindow *)_vm->_mainWindow)->_controlDown = false; return; } break; @@ -2304,6 +2305,7 @@ void SceneViewWindow::onKeyUp(const Common::KeyState &key, uint flags) { // Current points (ScummVM enhancement - Agent evaluation // from death screens) _vm->showPoints(); + ((FrameWindow *)_vm->_mainWindow)->_controlDown = false; return; } break;