From 51c405011ff299a1eebdcebf8d6bbfb9afb67108 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Fri, 3 Apr 2015 21:13:24 -0700 Subject: [PATCH] Qt: Fix shortcuts conflicting between views --- src/platform/qt/LoadSaveState.cpp | 9 ++++++--- src/platform/qt/Window.cpp | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/platform/qt/LoadSaveState.cpp b/src/platform/qt/LoadSaveState.cpp index 1f1acd814..756bd6c68 100644 --- a/src/platform/qt/LoadSaveState.cpp +++ b/src/platform/qt/LoadSaveState.cpp @@ -43,6 +43,12 @@ LoadSaveState::LoadSaveState(GameController* controller, QWidget* parent) m_slots[i]->installEventFilter(this); connect(m_slots[i], &QAbstractButton::clicked, this, [this, i]() { triggerState(i + 1); }); } + + QAction* escape = new QAction(this); + escape->connect(escape, SIGNAL(triggered()), this, SLOT(close())); + escape->setShortcut(QKeySequence("Esc")); + escape->setShortcutContext(Qt::WidgetWithChildrenShortcut); + addAction(escape); } void LoadSaveState::setMode(LoadSave mode) { @@ -80,9 +86,6 @@ bool LoadSaveState::eventFilter(QObject* object, QEvent* event) { case Qt::Key_9: triggerState(static_cast(event)->key() - Qt::Key_1 + 1); break; - case Qt::Key_Escape: - close(); - break; case Qt::Key_Enter: case Qt::Key_Return: triggerState(m_currentFocus + 1); diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 772d9129b..3146dc7cb 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -919,6 +919,7 @@ void Window::updateMRU() { QAction* Window::addControlledAction(QMenu* menu, QAction* action, const QString& name) { m_shortcutController->addAction(menu, action, name); menu->addAction(action); + action->setShortcutContext(Qt::WidgetShortcut); addAction(action); return action; }