From 94f3320444b9243bf52e4578ca9043fa690c5e4c Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Tue, 2 Aug 2011 09:24:17 +0200 Subject: [PATCH] Fix unwanted triggering of items An item should only be triggered after a mouse release event if the mouse press has been done at the same position. --- src/kitemviews/kitemlistcontroller.cpp | 8 ++++++-- src/kitemviews/kitemlistcontroller.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index b709e5606..a30c461cd 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -36,7 +36,8 @@ KItemListController::KItemListController(QObject* parent) : m_selectionBehavior(NoSelection), m_model(0), m_view(0), - m_selectionManager(new KItemListSelectionManager(this)) + m_selectionManager(new KItemListSelectionManager(this)), + m_pressedIndex(-1) { } @@ -130,6 +131,8 @@ bool KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const { Q_UNUSED(event); Q_UNUSED(transform); + const QPointF pos = transform.map(event->pos()); + m_pressedIndex = m_view->itemAt(pos); return false; } @@ -145,7 +148,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con if (m_view) { const QPointF pos = transform.map(event->pos()); const int index = m_view->itemAt(pos); - if (index >= 0) { + if (index >= 0 && index == m_pressedIndex) { bool emitItemClicked = true; if (event->button() & Qt::LeftButton) { if (m_view->isAboveExpansionToggle(index, pos)) { @@ -160,6 +163,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con } } + m_pressedIndex = -1; return false; } diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index 4407e3445..86f2b4ea6 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -111,6 +111,7 @@ private: KItemModelBase* m_model; KItemListView* m_view; KItemListSelectionManager* m_selectionManager; + int m_pressedIndex; }; #endif -- 2.47.3