From cdd002c57cde0480e6e02c7942e9b92af9d0a3e7 Mon Sep 17 00:00:00 2001 From: Elvis Angelaccio Date: Sat, 2 Sep 2017 16:28:49 +0200 Subject: [PATCH] Make sure we always have Shift+Del as shortcut After commit 68bb0ec22a the shortcut for the Delete action is not necessarily Shift+Del, but whatever the user set in System Setting. However DolphinRemoveAction assumes/hardcodes Shift+Del, so we should always make sure we have this shortcut around, for consistency. We just need to add it (if necessary) to the list of shortcuts of the action. However: * for the actual Delete action, we need to append it (if we'd prepend it, it would override a custom primary shortcut in the 'Configure Shortcuts' dialog). * for DolphinRemoveAction, we need to prepend it in order to have Shift+Del (rather than the custom primary shortcut) in the context menu. Differential Revision: https://phabricator.kde.org/D7655 --- src/dolphinremoveaction.cpp | 7 ++++++- src/views/dolphinviewactionhandler.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/dolphinremoveaction.cpp b/src/dolphinremoveaction.cpp index ad00f6286e..79d6bed602 100644 --- a/src/dolphinremoveaction.cpp +++ b/src/dolphinremoveaction.cpp @@ -48,14 +48,19 @@ void DolphinRemoveAction::update() if (qApp->queryKeyboardModifiers() & Qt::ShiftModifier) { m_action = m_collection ? m_collection->action(KStandardAction::name(KStandardAction::DeleteFile)) : 0; setText(i18nc("@action:inmenu", "&Delete")); + // Make sure we show Shift+Del in the context menu. + auto deleteShortcuts = m_action->shortcuts(); + deleteShortcuts.removeAll(Qt::SHIFT | Qt::Key_Delete); + deleteShortcuts.prepend(Qt::SHIFT | Qt::Key_Delete); + m_collection->setDefaultShortcuts(this, deleteShortcuts); } else { m_action = m_collection ? m_collection->action(QStringLiteral("move_to_trash")) : 0; setText(i18nc("@action:inmenu", "&Move to Trash")); + m_collection->setDefaultShortcuts(this, m_action->shortcuts()); } if (m_action) { setIcon(m_action->icon()); - m_collection->setDefaultShortcuts(this, m_action->shortcuts()); setEnabled(m_action->isEnabled()); } } diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp index 7e52d5b284..f4104d9cfe 100644 --- a/src/views/dolphinviewactionhandler.cpp +++ b/src/views/dolphinviewactionhandler.cpp @@ -120,7 +120,12 @@ void DolphinViewActionHandler::createActions() connect(moveToTrash, &QAction::triggered, this, &DolphinViewActionHandler::slotTrashActivated); - KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection); + auto deleteAction = KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection); + auto deleteShortcuts = deleteAction->shortcuts(); + if (!deleteShortcuts.contains(Qt::SHIFT | Qt::Key_Delete)) { + deleteShortcuts.append(Qt::SHIFT | Qt::Key_Delete); + m_actionCollection->setDefaultShortcuts(deleteAction, deleteShortcuts); + } // This action is useful for being enabled when "move_to_trash" should be // disabled and KStandardAction::DeleteFile is enabled (e.g. non-local files), so that Key_Del