diff options
| author | Peter Penz <[email protected]> | 2007-03-15 22:42:21 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2007-03-15 22:42:21 +0000 |
| commit | 1cdb64a12bf5e6f3b97d38992799ba6bfbb06ef5 (patch) | |
| tree | a037da905c5c5b39c3dc5719f428f325091c1efe /src/treeviewsidebarpage.cpp | |
| parent | 242bda1eaddd863b12afe8f3da7cf11d98475ccb (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.cpp | 51 |
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)) { |
