diff --git a/src/Gui/ShortcutManager.cpp b/src/Gui/ShortcutManager.cpp index a5cfd5c4fa..4d3e1f52eb 100644 --- a/src/Gui/ShortcutManager.cpp +++ b/src/Gui/ShortcutManager.cpp @@ -305,6 +305,26 @@ bool ShortcutManager::eventFilter(QObject* o, QEvent* ev) case QEvent::KeyPress: lastFocus = nullptr; break; + case QEvent::ShortcutOverride: { + auto kev = static_cast(ev); + if (!kev) { + break; + } + // don't process application shortcuts if we are editing a text widget + if (auto* focus = QApplication::focusWidget()) { + auto* maybeProxy = focus->focusProxy(); + auto* focusOrProxy = maybeProxy ? maybeProxy : focus; + + bool isFocusedWidgetTextInput = focusOrProxy->inherits("QLineEdit") + || focusOrProxy->inherits("QTextEdit") + || focusOrProxy->inherits("QPlainTextEdit"); + if (isFocusedWidgetTextInput) { + ev->accept(); + return true; + } + } + break; + } case QEvent::Shortcut: if (timeout > 0) { auto sev = static_cast(ev);