mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
When "move_to_trash" is disabled and "delete" is enabled (e.g. non-local files),
enable a hidden action with Key_Del as shortcut, so that the user can press Del to delete the file. BUG: 76016 svn path=/trunk/KDE/kdebase/apps/; revision=817389
This commit is contained in:
parent
008f524498
commit
3d28c53564
4 changed files with 20 additions and 7 deletions
|
@ -1113,6 +1113,7 @@ void DolphinMainWindow::updateEditActions()
|
||||||
QAction* moveToTrashAction = col->action("move_to_trash");
|
QAction* moveToTrashAction = col->action("move_to_trash");
|
||||||
QAction* deleteAction = col->action("delete");
|
QAction* deleteAction = col->action("delete");
|
||||||
QAction* cutAction = col->action(KStandardAction::name(KStandardAction::Cut));
|
QAction* cutAction = col->action(KStandardAction::name(KStandardAction::Cut));
|
||||||
|
QAction* deleteWithTrashShortcut = col->action("delete_shortcut"); // see DolphinViewActionHandler
|
||||||
|
|
||||||
KonqFileItemCapabilities capabilities(list);
|
KonqFileItemCapabilities capabilities(list);
|
||||||
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
|
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
|
||||||
|
@ -1120,6 +1121,7 @@ void DolphinMainWindow::updateEditActions()
|
||||||
renameAction->setEnabled(capabilities.supportsMoving());
|
renameAction->setEnabled(capabilities.supportsMoving());
|
||||||
moveToTrashAction->setEnabled(enableMoveToTrash);
|
moveToTrashAction->setEnabled(enableMoveToTrash);
|
||||||
deleteAction->setEnabled(capabilities.supportsDeleting());
|
deleteAction->setEnabled(capabilities.supportsDeleting());
|
||||||
|
deleteWithTrashShortcut->setEnabled(capabilities.supportsDeleting() && !enableMoveToTrash);
|
||||||
cutAction->setEnabled(capabilities.supportsMoving());
|
cutAction->setEnabled(capabilities.supportsMoving());
|
||||||
}
|
}
|
||||||
updatePasteAction();
|
updatePasteAction();
|
||||||
|
|
|
@ -122,8 +122,6 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QVariantL
|
||||||
m_actionHandler->updateViewActions();
|
m_actionHandler->updateViewActions();
|
||||||
slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions
|
slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions
|
||||||
|
|
||||||
// TODO sort_by_* actions
|
|
||||||
|
|
||||||
// TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror
|
// TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror
|
||||||
// (sort of spacial navigation)
|
// (sort of spacial navigation)
|
||||||
|
|
||||||
|
@ -213,26 +211,27 @@ void DolphinPart::slotSelectionChanged(const KFileItemList& selection)
|
||||||
QAction* deleteAction = actionCollection()->action("delete");
|
QAction* deleteAction = actionCollection()->action("delete");
|
||||||
QAction* editMimeTypeAction = actionCollection()->action("editMimeType");
|
QAction* editMimeTypeAction = actionCollection()->action("editMimeType");
|
||||||
QAction* propertiesAction = actionCollection()->action("properties");
|
QAction* propertiesAction = actionCollection()->action("properties");
|
||||||
|
QAction* deleteWithTrashShortcut = actionCollection()->action("delete_shortcut"); // see DolphinViewActionHandler
|
||||||
|
|
||||||
if (!hasSelection) {
|
if (!hasSelection) {
|
||||||
stateChanged("has_no_selection");
|
stateChanged("has_no_selection");
|
||||||
|
|
||||||
emit m_extension->enableAction("cut", false);
|
emit m_extension->enableAction("cut", false);
|
||||||
emit m_extension->enableAction("copy", false);
|
emit m_extension->enableAction("copy", false);
|
||||||
renameAction->setEnabled(false);
|
deleteWithTrashShortcut->setEnabled(false);
|
||||||
moveToTrashAction->setEnabled(false);
|
|
||||||
deleteAction->setEnabled(false);
|
|
||||||
editMimeTypeAction->setEnabled(false);
|
editMimeTypeAction->setEnabled(false);
|
||||||
propertiesAction->setEnabled(false);
|
|
||||||
} else {
|
} else {
|
||||||
stateChanged("has_selection");
|
stateChanged("has_selection");
|
||||||
|
|
||||||
|
// TODO share this code with DolphinMainWindow::updateEditActions (and the desktop code)
|
||||||
|
// in libkonq
|
||||||
KonqFileItemCapabilities capabilities(selection);
|
KonqFileItemCapabilities capabilities(selection);
|
||||||
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
|
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
|
||||||
|
|
||||||
renameAction->setEnabled(capabilities.supportsMoving());
|
renameAction->setEnabled(capabilities.supportsMoving());
|
||||||
moveToTrashAction->setEnabled(enableMoveToTrash);
|
moveToTrashAction->setEnabled(enableMoveToTrash);
|
||||||
deleteAction->setEnabled(capabilities.supportsDeleting());
|
deleteAction->setEnabled(capabilities.supportsDeleting());
|
||||||
|
deleteWithTrashShortcut->setEnabled(capabilities.supportsDeleting() && !enableMoveToTrash);
|
||||||
editMimeTypeAction->setEnabled(true);
|
editMimeTypeAction->setEnabled(true);
|
||||||
propertiesAction->setEnabled(true);
|
propertiesAction->setEnabled(true);
|
||||||
emit m_extension->enableAction("cut", capabilities.supportsMoving());
|
emit m_extension->enableAction("cut", capabilities.supportsMoving());
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
|
||||||
<kpartgui version="4" name="dolphin" >
|
<kpartgui name="dolphin" version="5">
|
||||||
<MenuBar>
|
<MenuBar>
|
||||||
<Menu name="file">
|
<Menu name="file">
|
||||||
<Action name="create_new" />
|
<Action name="create_new" />
|
||||||
|
@ -109,6 +109,7 @@
|
||||||
<Action name="rename" />
|
<Action name="rename" />
|
||||||
<Action name="move_to_trash" />
|
<Action name="move_to_trash" />
|
||||||
<Action name="delete" />
|
<Action name="delete" />
|
||||||
|
<Action name="delete_shortcut" />
|
||||||
<Action name="properties" />
|
<Action name="properties" />
|
||||||
<Action name="invert_selection" />
|
<Action name="invert_selection" />
|
||||||
</disable>
|
</disable>
|
||||||
|
|
|
@ -93,6 +93,17 @@ void DolphinViewActionHandler::createActions()
|
||||||
deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete);
|
deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete);
|
||||||
connect(deleteAction, SIGNAL(triggered()), this, SLOT(slotDeleteItems()));
|
connect(deleteAction, SIGNAL(triggered()), this, SLOT(slotDeleteItems()));
|
||||||
|
|
||||||
|
// This action is useful for being enabled when "move_to_trash" should be
|
||||||
|
// disabled and "delete" is enabled (e.g. non-local files), so that Key_Del
|
||||||
|
// can be used for deleting the file (#76016). It needs to be a separate action
|
||||||
|
// so that the Edit menu isn't affected.
|
||||||
|
KAction* deleteWithTrashShortcut = m_actionCollection->addAction("delete_shortcut");
|
||||||
|
// TODO after message freeze, a more descriptive text, for the shortcuts editor.
|
||||||
|
deleteWithTrashShortcut->setText(i18nc("@action:inmenu File", "Delete"));
|
||||||
|
deleteWithTrashShortcut->setShortcut(QKeySequence::Delete);
|
||||||
|
deleteWithTrashShortcut->setEnabled(false);
|
||||||
|
connect(deleteWithTrashShortcut, SIGNAL(triggered()), this, SLOT(slotDeleteItems()));
|
||||||
|
|
||||||
// View menu
|
// View menu
|
||||||
|
|
||||||
QActionGroup* viewModeActions = new QActionGroup(this);
|
QActionGroup* viewModeActions = new QActionGroup(this);
|
||||||
|
|
Loading…
Reference in a new issue