From d086e45d22a35b3e9d9ca7b59b53ad58f09c6003 Mon Sep 17 00:00:00 2001 From: Nicholas Van Sickle Date: Wed, 21 Jul 2021 09:52:49 -0700 Subject: [PATCH] Fix getting stuck in game mode with some UI Assets (#2207) - LyShine assets with "consume all input" could accidentally eat the escape event that exited game mode - The main window has a shortcut for exiting game mode, but this wasn't being triggered in this context, so we go ahead and catch the Escape key event ASAP in EditorViewportWidget to ensure the game mode exit fires Signed-off-by: nvsickle --- Code/Editor/EditorViewportWidget.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp index b052e7e222..c167fcb460 100644 --- a/Code/Editor/EditorViewportWidget.cpp +++ b/Code/Editor/EditorViewportWidget.cpp @@ -403,6 +403,19 @@ bool EditorViewportWidget::event(QEvent* event) m_keyDown.clear(); break; + case QEvent::ShortcutOverride: + { + // Ensure we exit game mode on escape, even if something else would eat our escape key event. + if (static_cast(event)->key() == Qt::Key_Escape && GetIEditor()->IsInGameMode()) + { + GetIEditor()->SetInGameMode(false); + event->accept(); + return true; + } + break; + } + + case QEvent::Shortcut: // a shortcut should immediately clear us, otherwise the release event never gets sent m_keyDown.clear();