┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphincontextmenu.cpp4
-rw-r--r--src/dolphinpart.cpp3
-rw-r--r--src/dolphinremoveaction.cpp29
-rw-r--r--src/dolphinremoveaction.h16
4 files changed, 39 insertions, 13 deletions
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index b297fb7fb..b4d249d76 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -124,7 +124,7 @@ DolphinContextMenu::Command DolphinContextMenu::open()
void DolphinContextMenu::keyPressEvent(QKeyEvent *ev)
{
if (m_removeAction && ev->key() == Qt::Key_Shift) {
- m_removeAction->update();
+ m_removeAction->update(DolphinRemoveAction::ShiftState::Pressed);
}
QMenu::keyPressEvent(ev);
}
@@ -132,7 +132,7 @@ void DolphinContextMenu::keyPressEvent(QKeyEvent *ev)
void DolphinContextMenu::keyReleaseEvent(QKeyEvent *ev)
{
if (m_removeAction && ev->key() == Qt::Key_Shift) {
- m_removeAction->update();
+ m_removeAction->update(DolphinRemoveAction::ShiftState::Released);
}
QMenu::keyReleaseEvent(ev);
}
diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp
index c38625096..b3b47304e 100644
--- a/src/dolphinpart.cpp
+++ b/src/dolphinpart.cpp
@@ -597,6 +597,7 @@ void DolphinPart::setFilesToSelect(const QList<QUrl>& files)
bool DolphinPart::eventFilter(QObject* obj, QEvent* event)
{
+ using ShiftState = DolphinRemoveAction::ShiftState;
const int type = event->type();
if ((type == QEvent::KeyPress || type == QEvent::KeyRelease) && m_removeAction) {
@@ -604,7 +605,7 @@ bool DolphinPart::eventFilter(QObject* obj, QEvent* event)
if (menu && menu->parent() == m_view) {
QKeyEvent* ev = static_cast<QKeyEvent*>(event);
if (ev->key() == Qt::Key_Shift) {
- m_removeAction->update();
+ m_removeAction->update(type == QEvent::KeyPress ? ShiftState::Pressed : ShiftState::Released);
}
}
}
diff --git a/src/dolphinremoveaction.cpp b/src/dolphinremoveaction.cpp
index c471b2df6..ce3059934 100644
--- a/src/dolphinremoveaction.cpp
+++ b/src/dolphinremoveaction.cpp
@@ -1,5 +1,6 @@
/***************************************************************************
- * Copyright (C) 2013 by Dawit Alemayehu <[email protected] *
+ * Copyright (C) 2013 by Dawit Alemayehu <[email protected]> *
+ * Copyright (C) 2017 by Elvis Angelaccio <[email protected]> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -39,13 +40,27 @@ void DolphinRemoveAction::slotRemoveActionTriggered()
}
}
-void DolphinRemoveAction::update()
+void DolphinRemoveAction::update(ShiftState shiftState)
{
- Q_ASSERT(m_collection);
- if (qApp->queryKeyboardModifiers() & Qt::ShiftModifier) {
- m_action = m_collection ? m_collection->action(KStandardAction::name(KStandardAction::DeleteFile)) : 0;
- } else {
- m_action = m_collection ? m_collection->action(KStandardAction::name(KStandardAction::MoveToTrash)) : 0;
+ if (!m_collection) {
+ m_action = nullptr;
+ return;
+ }
+
+ if (shiftState == ShiftState::Unknown) {
+ shiftState = QGuiApplication::keyboardModifiers() & Qt::ShiftModifier ? ShiftState::Pressed : ShiftState::Released;
+ }
+
+ switch (shiftState) {
+ case ShiftState::Pressed:
+ m_action = m_collection->action(KStandardAction::name(KStandardAction::DeleteFile));
+ break;
+ case ShiftState::Released:
+ m_action = m_collection->action(KStandardAction::name(KStandardAction::MoveToTrash));
+ break;
+ case ShiftState::Unknown:
+ Q_UNREACHABLE();
+ break;
}
if (m_action) {
diff --git a/src/dolphinremoveaction.h b/src/dolphinremoveaction.h
index f9a1b98be..6ba25923a 100644
--- a/src/dolphinremoveaction.h
+++ b/src/dolphinremoveaction.h
@@ -1,5 +1,6 @@
/***************************************************************************
- * Copyright (C) 2013 by Dawit Alemayehu <[email protected] *
+ * Copyright (C) 2013 by Dawit Alemayehu <[email protected]> *
+ * Copyright (C) 2017 by Elvis Angelaccio <[email protected]> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
@@ -38,11 +39,20 @@ class DOLPHIN_EXPORT DolphinRemoveAction : public QAction
{
Q_OBJECT
public:
+
+ enum class ShiftState {
+ Unknown,
+ Pressed,
+ Released
+ };
+
DolphinRemoveAction(QObject* parent, KActionCollection* collection);
+
/**
- * Updates this action key based on the state of the Shift key.
+ * Updates this action key based on @p shiftState.
+ * Default value is QueryShiftState, meaning it will query QGuiApplication::modifiers().
*/
- void update();
+ void update(ShiftState shiftState = ShiftState::Unknown);
private Q_SLOTS:
void slotRemoveActionTriggered();