From 8ee3363dbcc4d2e9e9f89b2737d26fcea55653a7 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 18 Nov 2007 13:24:43 +0000 Subject: [PATCH] fix crash for the following use case: - open a view with no selection - press SHIFT + right mouse-click on an item - a context menu will be opened although no item has been selected -> assertion gets triggered later svn path=/trunk/KDE/kdebase/apps/; revision=738255 --- src/dolphincolumnwidget.cpp | 14 ++++++++------ src/dolphindetailsview.cpp | 4 +++- src/dolphiniconsview.cpp | 4 +++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index 2dc3bc153..7681b8838 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -309,12 +309,14 @@ void DolphinColumnWidget::contextMenuEvent(QContextMenuEvent* event) QListView::contextMenuEvent(event); - const QModelIndex index = indexAt(event->pos()); - if (index.isValid() || m_active) { - // Only open a context menu above an item or if the mouse is above - // the active column. - const QPoint pos = m_view->viewport()->mapFromGlobal(event->globalPos()); - m_view->m_controller->triggerContextMenuRequest(pos); + if (selectionModel()->hasSelection()) { + const QModelIndex index = indexAt(event->pos()); + if (index.isValid() || m_active) { + // Only open a context menu above an item or if the mouse is above + // the active column. + const QPoint pos = m_view->viewport()->mapFromGlobal(event->globalPos()); + m_view->m_controller->triggerContextMenuRequest(pos); + } } } diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index f4bba2f03..9dd91b308 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -167,7 +167,9 @@ QStyleOptionViewItem DolphinDetailsView::viewOptions() const void DolphinDetailsView::contextMenuEvent(QContextMenuEvent* event) { QTreeView::contextMenuEvent(event); - m_controller->triggerContextMenuRequest(event->pos()); + if (selectionModel()->hasSelection()) { + m_controller->triggerContextMenuRequest(event->pos()); + } } void DolphinDetailsView::mousePressEvent(QMouseEvent* event) diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 08ff9cf48..95ea011b0 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -162,7 +162,9 @@ QStyleOptionViewItem DolphinIconsView::viewOptions() const void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event) { KCategorizedView::contextMenuEvent(event); - m_controller->triggerContextMenuRequest(event->pos()); + if (selectionModel()->hasSelection()) { + m_controller->triggerContextMenuRequest(event->pos()); + } } void DolphinIconsView::mousePressEvent(QMouseEvent* event) -- 2.47.3