diff options
| author | Peter Penz <[email protected]> | 2007-02-11 20:54:07 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2007-02-11 20:54:07 +0000 |
| commit | 7e61bb47d742c116fcd63223778cf9dda8b6aaac (patch) | |
| tree | 7c287ccd9b13aa91eff1bf3eb39c1fa49c7856d3 /src/dolphiniconsview.cpp | |
| parent | 814a7c7f77f4470e3250d09397832f4f512b8e02 (diff) | |
don't accept drops into the same view if it is not done above a directory
svn path=/trunk/playground/utils/dolphin/; revision=632656
Diffstat (limited to 'src/dolphiniconsview.cpp')
| -rw-r--r-- | src/dolphiniconsview.cpp | 34 |
1 files changed, 24 insertions, 10 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 <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 @@ 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); } } |
