From b8a4e0fac2820ec8fc442c2abeea700ae4947e01 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 18 Jun 2008 19:34:03 +0000 Subject: Assure that when requesting the context menu for the column-view, that the correct items are used. TODO for 4.2: get rid of those 'if (isColumnViewActive())' special cases and provide a generic model which also works with the way the column view is implemented BUG: 164146 svn path=/trunk/KDE/kdebase/apps/; revision=821903 --- src/dolphincolumnwidget.cpp | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'src/dolphincolumnwidget.cpp') diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 8f3b253aa..6d983f71f 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -28,6 +28,7 @@ #include "dolphin_columnmodesettings.h" #include "dolphin_generalsettings.h" #include "draganddrophelper.h" +#include "iconmanager.h" #include "selectionmanager.h" #include "tooltipmanager.h" @@ -39,8 +40,6 @@ #include #include -#include "iconmanager.h" - #include #include #include @@ -246,6 +245,33 @@ void DolphinColumnWidget::editItem(const KFileItem& item) } } +KFileItem DolphinColumnWidget::itemAt(const QPoint& pos) const +{ + KFileItem item; + const QModelIndex index = indexAt(pos); + if (index.isValid() && (index.column() == DolphinModel::Name)) { + const QModelIndex dolphinModelIndex = m_proxyModel->mapToSource(index); + item = m_dolphinModel->itemForIndex(dolphinModelIndex); + } + return item; +} + +KFileItemList DolphinColumnWidget::selectedItems() const +{ + const QItemSelection selection = m_proxyModel->mapSelectionToSource(selectionModel()->selection()); + KFileItemList itemList; + + const QModelIndexList indexList = selection.indexes(); + foreach (const QModelIndex &index, indexList) { + KFileItem item = m_dolphinModel->itemForIndex(index); + if (!item.isNull()) { + itemList.append(item); + } + } + + return itemList; +} + QStyleOptionViewItem DolphinColumnWidget::viewOptions() const { QStyleOptionViewItem viewOptions = QListView::viewOptions(); @@ -364,6 +390,10 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event) QListView::contextMenuEvent(event); const QModelIndex index = indexAt(event->pos()); + if (!index.isValid()) { + clearSelection(); + } + if (index.isValid() || m_active) { // Only open a context menu above an item or if the mouse is above // the active column. -- cgit v1.3