From: Peter Penz Date: Sat, 14 Jan 2012 19:02:11 +0000 (+0100) Subject: Fix issue when deleting items with the context menu X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/9da248fa267f4d9e85cc12c1afbe859e4de7c233?ds=sidebyside Fix issue when deleting items with the context menu Thanks to Jekyll Wu for the analyses of the issue! BUG: 290307 BUG: 269096 BUG: 290954 BUG: 264583 FIXED-IN: 4.8.0 --- diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp index 8d4a3173d..286d304c5 100644 --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -159,10 +159,10 @@ void DolphinContextMenu::slotKeyModifierPressed(Qt::Key key, bool pressed) void DolphinContextMenu::slotRemoveActionTriggered() { const KActionCollection* collection = m_mainWindow->actionCollection(); - if (m_shiftPressed) { - collection->action("delete")->trigger(); - } else { + if (moveToTrash()) { collection->action("move_to_trash")->trigger(); + } else { + collection->action("delete")->trigger(); } } @@ -449,7 +449,7 @@ QAction* DolphinContextMenu::createPasteAction() return action; } -KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() +KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() const { if (!m_selectedItemsProperties) { m_selectedItemsProperties = new KFileItemListProperties(m_selectedItems); @@ -541,13 +541,12 @@ void DolphinContextMenu::addCustomActions() void DolphinContextMenu::updateRemoveAction() { const KActionCollection* collection = m_mainWindow->actionCollection(); - const bool moveToTrash = selectedItemsProperties().isLocal() && !m_shiftPressed; // Using m_removeAction->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. const QAction* action = 0; - if (moveToTrash) { + if (moveToTrash()) { action = collection->action("move_to_trash"); m_removeAction->setText(i18nc("@action:inmenu", "&Move to Trash")); } else { @@ -558,4 +557,9 @@ void DolphinContextMenu::updateRemoveAction() m_removeAction->setShortcuts(action->shortcuts()); } +bool DolphinContextMenu::moveToTrash() const +{ + return selectedItemsProperties().isLocal() && !m_shiftPressed; +} + #include "dolphincontextmenu.moc" diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h index 7f43de368..9e8b804cd 100644 --- a/src/dolphincontextmenu.h +++ b/src/dolphincontextmenu.h @@ -139,7 +139,7 @@ private: QAction* createPasteAction(); - KFileItemListProperties& selectedItemsProperties(); + KFileItemListProperties& selectedItemsProperties() const; /** * Returns the file item for m_baseUrl. @@ -170,10 +170,18 @@ private: /** * Updates m_removeAction to represent the 'Delete'-action if the shift-key - * has been pressed. Otherwise it represents the 'Move to Trash'-action. + * has been pressed or the selection is not local. Otherwise it represents + * the 'Move to Trash'-action. */ void updateRemoveAction(); + /** + * @return True if no shift key has been pressed and the selection represents + * only local files. + * @see updateRemoveAction(), slotRemoveActionTriggered() + */ + bool moveToTrash() const; + private: struct Entry { @@ -201,7 +209,7 @@ private: KFileItem* m_baseFileItem; /// File item for m_baseUrl KFileItemList m_selectedItems; - KFileItemListProperties* m_selectedItemsProperties; + mutable KFileItemListProperties* m_selectedItemsProperties; int m_context; KonqCopyToMenu m_copyToMenu;