Properly check Shift toggling in DolphinRemoveAction

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
This commit is contained in:
Elvis Angelaccio 2016-09-21 18:13:29 +02:00
parent e93e6d4cc5
commit 3775ef19ea

View 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 {