]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix issue when deleting items with the context menu
authorPeter Penz <peter.penz19@gmail.com>
Sat, 14 Jan 2012 19:02:11 +0000 (20:02 +0100)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 14 Jan 2012 19:05:09 +0000 (20:05 +0100)
Thanks to Jekyll Wu for the analyses of the issue!

BUG: 290307
BUG: 269096
BUG: 290954
BUG: 264583
FIXED-IN: 4.8.0

src/dolphincontextmenu.cpp
src/dolphincontextmenu.h

index 8d4a3173dafa2506737c8aca7bce1b71587949d9..286d304c5217cf4034fe835b6413c655c2925cdb 100644 (file)
@@ -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"
index 7f43de3680f50621d74ebfa0e703716f3a837f55..9e8b804cd4937c62a70f7a10347553b419d9a2aa 100644 (file)
@@ -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;