diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp index 5e7407fdf7b..49c9e2dba5a 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.cpp @@ -34,8 +34,12 @@ #include +#include #include +#include +#include + namespace QmlDesigner { TextEditorWidget::TextEditorWidget(TextEditorView *textEditorView) : QWidget() @@ -64,6 +68,7 @@ void TextEditorWidget::setTextEditor(TextEditor::BaseTextEditor *textEditor) { connect(textEditor->editorWidget(), &QPlainTextEdit::cursorPositionChanged, &m_updateSelectionTimer, static_cast(&QTimer::start)); + textEditor->editorWidget()->installEventFilter(this); } QString TextEditorWidget::contextHelpId() const @@ -136,4 +141,18 @@ int TextEditorWidget::currentLine() const return -1; } +bool TextEditorWidget::eventFilter( QObject *, QEvent *event) +{ + static std::vector overrideKeys = { Qt::Key_Delete, Qt::Key_Backspace, Qt::Key_Left, Qt::Key_Right, Qt::Key_Up, Qt::Key_Down }; + if (event->type() == QEvent::ShortcutOverride) { + QKeyEvent *keyEvent = static_cast(event); + if (std::find(overrideKeys.begin(), overrideKeys.end(), keyEvent->key()) != overrideKeys.end()) { + keyEvent->accept(); + return true; + } + } + return false; +} + + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.h b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.h index 41da765aa0b..46a65cdd24b 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorwidget.h +++ b/src/plugins/qmldesigner/components/texteditor/texteditorwidget.h @@ -58,6 +58,9 @@ public: void clearStatusBar(); int currentLine() const; +protected: + bool eventFilter(QObject *object, QEvent *event) override; + private: void updateSelectionByCursorPosition();