diff --git a/src/qmlcontrols/kquickcontrols/KeySequenceItem.qml b/src/qmlcontrols/kquickcontrols/KeySequenceItem.qml --- a/src/qmlcontrols/kquickcontrols/KeySequenceItem.qml +++ b/src/qmlcontrols/kquickcontrols/KeySequenceItem.qml @@ -5,15 +5,16 @@ import org.kde.private.kquickcontrols 2.0 as KQuickControlsPrivate RowLayout { + id: root property alias showClearButton: clearButton.visible property alias modifierlessAllowed: _helper.modifierlessAllowed property alias multiKeyShortcutsAllowed: _helper.multiKeyShortcutsAllowed property alias keySequence: _helper.keySequence KQuickControlsPrivate.KeySequenceHelper { id: _helper - + keySequenceItem: root onCaptureFinished: { mainButton.checked = false; } diff --git a/src/qmlcontrols/kquickcontrols/private/keysequencehelper.h b/src/qmlcontrols/kquickcontrols/private/keysequencehelper.h --- a/src/qmlcontrols/kquickcontrols/private/keysequencehelper.h +++ b/src/qmlcontrols/kquickcontrols/private/keysequencehelper.h @@ -31,6 +31,8 @@ * */ +class QQuickItem; + class KeySequenceHelperPrivate; class KeySequenceHelper : public QObject @@ -57,6 +59,10 @@ bool modifierlessAllowed READ isModifierlessAllowed WRITE setModifierlessAllowed) + Q_PROPERTY( + QQuickItem* keySequenceItem + READ keySequenceItem + WRITE setKeySequenceItem) public: @@ -115,6 +121,8 @@ bool isKeySequenceAvailable(const QKeySequence &keySequence) const; + QQuickItem* keySequenceItem() const; + void setKeySequenceItem(QQuickItem *item); Q_SIGNALS: void keySequenceChanged(const QKeySequence &seq); 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 @@ -24,6 +24,8 @@ #include "keysequencehelper.h" #include +#include +#include #include #include #include @@ -113,7 +115,7 @@ bool multiKeyShortcutsAllowed; QString componentName; QString shortcutDisplay; - + QQuickItem* keySequenceItem; //! Check the key sequence against KStandardShortcut::find() KeySequenceHelper::ShortcutTypes checkAgainstShortcutTypes; @@ -229,23 +231,33 @@ setKeySequence(QKeySequence()); } +QQuickItem* KeySequenceHelper::keySequenceItem() const +{ + return d->keySequenceItem; +} + +void KeySequenceHelper::setKeySequenceItem(QQuickItem *item) +{ + d->keySequenceItem = item; +} + void KeySequenceHelperPrivate::startRecording() { nKey = 0; modifierKeys = 0; oldKeySequence = keySequence; keySequence = QKeySequence(); isRecording = true; - + keySequenceItem->window()->setKeyboardGrabEnabled(true); updateShortcutDisplay(); } // void KeySequenceHelper::doneRecording() { d->modifierlessTimeout.stop(); d->isRecording = false; d->stealActions.clear(); - + d->keySequenceItem->window()->setKeyboardGrabEnabled(false); if (d->keySequence == d->oldKeySequence) { // The sequence hasn't changed d->updateShortcutDisplay();