]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Properly check Shift toggling in DolphinRemoveAction
authorElvis Angelaccio <elvis.angelaccio@kde.org>
Wed, 21 Sep 2016 16:13:29 +0000 (18:13 +0200)
committerElvis Angelaccio <elvis.angelaccio@kde.org>
Wed, 21 Sep 2016 16:13:29 +0000 (18:13 +0200)
Documentation of QGuiApplication::keyboardModifiers() says that "It should
be noted this may not reflect the actual keys held on the input device at
the time of calling but rather the modifiers as last reported in one of
the above events".

Since this method is called in DolphinContextMenu's keyPressEvent()
and keyReleaseEvent(), the first time that keyboardModifiers() is
called it doesn't report that shift has been pressed.

Replacing this method with queryKeyboardModifiers() does the job
because the latter doesn't care about the event queue.

BUG: 354301
FIXED-IN: 16.08.2
REVIEW: 128972

src/dolphinremoveaction.cpp

index c91d74579d76a30c69a1654146ea676bc7eb8e01..10ab25112a7ecd2587de1bf89fcfa05c0722a625 100644 (file)
@@ -45,7 +45,7 @@ void DolphinRemoveAction::update()
     // Using setText(action->text()) does not apply the &-shortcut.
     // This is only done until the original action has been shown at least once. To
     // bypass this issue, the text and &-shortcut is applied manually.
-    if (qApp->keyboardModifiers() & Qt::ShiftModifier) {
+    if (qApp->queryKeyboardModifiers() & Qt::ShiftModifier) {
         m_action = m_collection ? m_collection->action(QStringLiteral("delete")) : 0;
         setText(i18nc("@action:inmenu", "&Delete"));
     } else {