From 7e61bb47d742c116fcd63223778cf9dda8b6aaac Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 11 Feb 2007 20:54:07 +0000 Subject: [PATCH] don't accept drops into the same view if it is not done above a directory svn path=/trunk/playground/utils/dolphin/; revision=632656 --- src/dolphiniconsview.cpp | 34 ++++++++++++++++++++++++---------- src/dolphiniconsview.h | 2 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 6d5509275..840d7f5fb 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -22,6 +22,7 @@ #include "dolphinmainwindow.h" #include "dolphinview.h" +#include #include #include @@ -29,7 +30,7 @@ DolphinIconsView::DolphinIconsView(DolphinView* parent) : QListView(parent), - m_parentView(parent) + m_dolphinView(parent) { setResizeMode(QListView::Adjust); } @@ -61,16 +62,16 @@ void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event) 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::dragEnterEvent(QDragEnterEvent* event) 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); } } diff --git a/src/dolphiniconsview.h b/src/dolphiniconsview.h index 5c507ad67..99ca12688 100644 --- a/src/dolphiniconsview.h +++ b/src/dolphiniconsview.h @@ -49,7 +49,7 @@ protected: virtual void dropEvent(QDropEvent* event); private: - DolphinView* m_parentView; + DolphinView* m_dolphinView; }; #endif -- 2.47.3