diff --git a/src/qmlcontrols/kquickcontrols/private/keysequencehelper.cpp b/src/qmlcontrols/kquickcontrols/private/keysequencehelper.cpp --- a/src/qmlcontrols/kquickcontrols/private/keysequencehelper.cpp +++ b/src/qmlcontrols/kquickcontrols/private/keysequencehelper.cpp @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include @@ -104,6 +106,7 @@ KeySequenceHelper *const q; QToolButton *clearButton; + QPointer grabbedWindow; QKeySequence keySequence; QKeySequence oldKeySequence; QTimer modifierlessTimeout; @@ -237,16 +240,24 @@ oldKeySequence = keySequence; keySequence = QKeySequence(); isRecording = true; - q->window()->setKeyboardGrabEnabled(true); + grabbedWindow = QQuickRenderControl::renderWindowFor(q->window()); + if (!grabbedWindow) { + grabbedWindow = q->window(); + } + if (grabbedWindow) { + grabbedWindow->setKeyboardGrabEnabled(true); + } updateShortcutDisplay(); } // void KeySequenceHelper::doneRecording() { d->modifierlessTimeout.stop(); d->isRecording = false; d->stealActions.clear(); - window()->setKeyboardGrabEnabled(false); + if (d->grabbedWindow) { + d->grabbedWindow->setKeyboardGrabEnabled(false); + } if (d->keySequence == d->oldKeySequence) { // The sequence hasn't changed d->updateShortcutDisplay();