┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/treeviewsidebarpage.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-03-15 22:42:21 +0000
committerPeter Penz <[email protected]>2007-03-15 22:42:21 +0000
commit1cdb64a12bf5e6f3b97d38992799ba6bfbb06ef5 (patch)
treea037da905c5c5b39c3dc5719f428f325091c1efe /src/treeviewsidebarpage.cpp
parent242bda1eaddd863b12afe8f3da7cf11d98475ccb (diff)
Don't force the context menu to be valid only for DolphinView instances, make it possible to have it also inside the treeview sidebar.
svn path=/trunk/KDE/kdebase/apps/; revision=642953
Diffstat (limited to 'src/treeviewsidebarpage.cpp')
-rw-r--r--src/treeviewsidebarpage.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp
index c605babf0..65b0687e8 100644
--- a/src/treeviewsidebarpage.cpp
+++ b/src/treeviewsidebarpage.cpp
@@ -20,6 +20,7 @@
#include "treeviewsidebarpage.h"
#include "bookmarkselector.h"
+#include "dolphincontextmenu.h"
#include "dolphinmainwindow.h"
#include "dolphinsortfilterproxymodel.h"
#include "dolphinview.h"
@@ -103,6 +104,56 @@ void TreeViewSidebarPage::showEvent(QShowEvent* event)
connectToActiveView();
}
+void TreeViewSidebarPage::contextMenuEvent(QContextMenuEvent* event)
+{
+ SidebarPage::contextMenuEvent(event);
+
+ // TODO: temporary deactivate the following code, as the wrong
+ // selection of cut/copy/paste actions is very confusing:
+ return;
+
+ KFileItem* item = 0;
+
+ const QModelIndex index = m_treeView->indexAt(event->pos());
+ if (!index.isValid()) {
+ // only open a context menu above a directory item
+ return;
+ }
+
+#if defined(USE_PROXY_MODEL)
+ const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index);
+ item = m_dirModel->itemForIndex(dirModelIndex);
+#else
+ item = m_dirModel->itemForIndex(index);
+#endif
+
+#if defined(USE_PROXY_MODEL)
+ const QItemSelection selection = m_proxyModel->mapSelectionToSource(
+ m_treeView->selectionModel()->selection());
+#else
+ const QItemSelection selection = m_treeView->selectionModel()->selection();
+#endif
+
+ KFileItemList selectedItems;
+
+ const QModelIndexList indexList = selection.indexes();
+ QModelIndexList::const_iterator end = indexList.end();
+ for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) {
+ Q_ASSERT((*it).isValid());
+
+ KFileItem* item = m_dirModel->itemForIndex(*it);
+ if (item != 0) {
+ selectedItems.append(item);
+ }
+ }
+
+ DolphinContextMenu contextMenu(mainWindow(),
+ item,
+ m_dirLister->url(),
+ selectedItems);
+ contextMenu.open();
+}
+
void TreeViewSidebarPage::updateSelection(const KUrl& url)
{
if (!url.isValid() || (url == m_selectedUrl)) {