From 62332eb216dcfade35c6f87917f3315278a4c3fa Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 21 Mar 2021 23:26:33 +1100 Subject: [PATCH] keysequenceeditor: override backspace and esc behavior Fixes #1455 --- app/dialog/preferences/keysequenceeditor.cpp | 27 +++++++++++++++++++- app/dialog/preferences/keysequenceeditor.h | 6 +++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/dialog/preferences/keysequenceeditor.cpp b/app/dialog/preferences/keysequenceeditor.cpp index 34012ef2f..1582156bc 100644 --- a/app/dialog/preferences/keysequenceeditor.cpp +++ b/app/dialog/preferences/keysequenceeditor.cpp @@ -21,11 +21,14 @@ #include "keysequenceeditor.h" #include +#include namespace olive { +#define super QKeySequenceEdit + KeySequenceEditor::KeySequenceEditor(QWidget* parent, QAction* a) - : QKeySequenceEdit(parent), action(a) { + : super(parent), action(a) { setKeySequence(action->shortcut()); } @@ -49,4 +52,26 @@ QString KeySequenceEditor::export_shortcut() { return nullptr; } +void KeySequenceEditor::keyPressEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Backspace) { + clear(); + } else if (e->key() == Qt::Key_Escape) { + e->ignore(); + } else{ + super::keyPressEvent(e); + } +} + +void KeySequenceEditor::keyReleaseEvent(QKeyEvent *e) +{ + if (e->key() == Qt::Key_Backspace) { + // Do nothing + } else if (e->key() == Qt::Key_Escape) { + e->ignore(); + } else { + super::keyReleaseEvent(e); + } +} + } diff --git a/app/dialog/preferences/keysequenceeditor.h b/app/dialog/preferences/keysequenceeditor.h index 3231df622..7611d6de3 100644 --- a/app/dialog/preferences/keysequenceeditor.h +++ b/app/dialog/preferences/keysequenceeditor.h @@ -94,6 +94,12 @@ public: * because a default shortcut does not need to be saved to a file. */ QString export_shortcut(); + +protected: + virtual void keyPressEvent(QKeyEvent *e) override; + + virtual void keyReleaseEvent(QKeyEvent *e) override; + private: /** * @brief Internal reference to the linked QAction