]> cloud.milkyroute.net Git - dolphin.git/commitdiff
If a user pastes a directory into itself, ask him whether this intended and give...
authorPeter Penz <peter.penz19@gmail.com>
Wed, 12 Mar 2008 22:03:16 +0000 (22:03 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 12 Mar 2008 22:03:16 +0000 (22:03 +0000)
BUG: 159207

svn path=/trunk/KDE/kdebase/apps/; revision=784965

src/dolphinview.cpp

index 0cf740cd56978a97f7a69b8ea51ba38f8dd95ab3..467f4ece48d5b9c7380414f948a7a62644918665 100644 (file)
@@ -39,6 +39,7 @@
 #include <kio/previewjob.h>
 #include <kjob.h>
 #include <kmenu.h>
+#include <kmessagebox.h>
 #include <kmimetyperesolver.h>
 #include <konq_operations.h>
 #include <konqmimedata.h>
@@ -1103,8 +1104,8 @@ void DolphinView::paste()
 
     const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
 
-    // per default the pasting is done into the current Url of the view
-    KUrl destUrl(url());
+    // per default the pasting is done into the current URL of the view
+    KUrl destUrl = url();
 
     // check whether the pasting should be done into a selected directory
     const KUrl::List selectedUrls = this->selectedUrls();
@@ -1117,6 +1118,17 @@ void DolphinView::paste()
             // only one item is selected which is a directory, hence paste
             // into this directory
             destUrl = selectedUrls.first();
+            if (sourceUrls.contains(destUrl)) {
+                const QString text = i18nc("@info", "The folder <filename>%1</filename> is pasted into itself. Is this intended?", fileItem.name());
+                int result = KMessageBox::questionYesNo(window(),
+                                                        text,
+                                                        i18nc("@title:window", "Paste into Folder"),
+                                                        KGuiItem(i18nc("@label", "Paste"), "dialog-ok"),
+                                                        KGuiItem(i18nc("@label", "Cancel"), "dialog-cancel"));
+                if (result == KMessageBox::No) {
+                    return;
+                }
+            }
         }
     }