[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/utils/dolphin/src
From:       Peter Penz <peter.penz () gmx ! at>
Date:       2007-02-11 20:54:09
Message-ID: 1171227249.444436.15436.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 632656 by ppenz:

don't accept drops into the same view if it is not done above a directory

 M  +24 -10    dolphiniconsview.cpp  
 M  +1 -1      dolphiniconsview.h  


--- trunk/playground/utils/dolphin/src/dolphiniconsview.cpp #632655:632656
@@ -22,6 +22,7 @@
 #include "dolphinmainwindow.h"
 #include "dolphinview.h"
 
+#include <assert.h>
 #include <kdirmodel.h>
 #include <kfileitem.h>
 
@@ -29,7 +30,7 @@
 
 DolphinIconsView::DolphinIconsView(DolphinView* parent) :
     QListView(parent),
-    m_parentView(parent)
+    m_dolphinView(parent)
 {
     setResizeMode(QListView::Adjust);
 }
@@ -61,16 +62,16 @@
 
     const QModelIndex index = indexAt(event->pos());
     if (index.isValid()) {
-        item = m_parentView->fileItem(index);
+        item = m_dolphinView->fileItem(index);
     }
 
-    m_parentView->openContextMenu(item, event->globalPos());
+    m_dolphinView->openContextMenu(item, event->globalPos());
 }
 
 void DolphinIconsView::mouseReleaseEvent(QMouseEvent* event)
 {
     QListView::mouseReleaseEvent(event);
-    m_parentView->declareViewActive();
+    m_dolphinView->declareViewActive();
 }
 
 void DolphinIconsView::dragEnterEvent(QDragEnterEvent* event)
@@ -82,14 +83,27 @@
 
 void DolphinIconsView::dropEvent(QDropEvent* event)
 {
+    KFileItem* directory = 0;
+    bool dropIntoDirectory = false;
+    const QModelIndex index = indexAt(event->pos());
+    if (index.isValid()) {
+        KFileItem* item = m_dolphinView->fileItem(index);
+        assert(item != 0);
+        dropIntoDirectory = item->isDir();
+        if (dropIntoDirectory) {
+            directory = item;
+        }
+    }
+
     const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
-    if (!urls.isEmpty()) {
+    if (urls.isEmpty() || (event->source() == this) && !dropIntoDirectory) {
+        QListView::dropEvent(event);
+    }
+    else {
         event->acceptProposedAction();
-
-        // TODO: handle dropping above a directory
-
-        const KUrl& destination = m_parentView->url();
-        m_parentView->mainWindow()->dropUrls(urls, destination);
+        const KUrl& destination = (directory == 0) ? m_dolphinView->url() :
+                                                     directory->url();
+        m_dolphinView->mainWindow()->dropUrls(urls, destination);
     }
 }
 
--- trunk/playground/utils/dolphin/src/dolphiniconsview.h #632655:632656
@@ -49,7 +49,7 @@
     virtual void dropEvent(QDropEvent* event);
 
 private:
-    DolphinView* m_parentView;
+    DolphinView* m_dolphinView;
 };
 
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic