diff options
| author | Méven Car <[email protected]> | 2024-07-31 11:00:32 +0200 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2024-07-31 12:04:38 +0000 |
| commit | 131c889b0c050592809035242db6200482e0edde (patch) | |
| tree | 1df689ffff398ea1a36cb52aba99d7c9201d3334 /src/tests/kitemlistcontrollertest.cpp | |
| parent | ceaff226305746c46597f7b43df453bec03ddd0f (diff) | |
Kitemlistcontroller: only accept doubleclick for left mouse button
Add test for double-click activation.
BUG: 485295
Diffstat (limited to 'src/tests/kitemlistcontrollertest.cpp')
| -rw-r--r-- | src/tests/kitemlistcontrollertest.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/tests/kitemlistcontrollertest.cpp b/src/tests/kitemlistcontrollertest.cpp index cb921781d..18ad1186d 100644 --- a/src/tests/kitemlistcontrollertest.cpp +++ b/src/tests/kitemlistcontrollertest.cpp @@ -620,6 +620,41 @@ void KItemListControllerTest::testMouseClickActivation() mouseReleaseEvent.setButton(Qt::LeftButton); mouseReleaseEvent.setButtons(Qt::NoButton); + QGraphicsSceneMouseEvent mouseDoubleClickEvent(QEvent::GraphicsSceneMouseDoubleClick); + mouseDoubleClickEvent.setPos(pos); + mouseDoubleClickEvent.setButton(Qt::LeftButton); + mouseDoubleClickEvent.setButtons(Qt::LeftButton); + + QGraphicsSceneMouseEvent mouseRightPressEvent(QEvent::GraphicsSceneMousePress); + mouseRightPressEvent.setPos(pos); + mouseRightPressEvent.setButton(Qt::RightButton); + mouseRightPressEvent.setButtons(Qt::RightButton); + + QGraphicsSceneMouseEvent mouseRightReleaseEvent(QEvent::GraphicsSceneMouseRelease); + mouseRightReleaseEvent.setPos(pos); + mouseRightReleaseEvent.setButton(Qt::RightButton); + mouseRightReleaseEvent.setButtons(Qt::NoButton); + + QGraphicsSceneMouseEvent mouseRightDoubleClickEvent(QEvent::GraphicsSceneMouseDoubleClick); + mouseRightDoubleClickEvent.setPos(pos); + mouseRightDoubleClickEvent.setButton(Qt::RightButton); + mouseRightDoubleClickEvent.setButtons(Qt::RightButton); + + QGraphicsSceneMouseEvent mouseBackPressEvent(QEvent::GraphicsSceneMousePress); + mouseBackPressEvent.setPos(pos); + mouseBackPressEvent.setButton(Qt::BackButton); + mouseBackPressEvent.setButtons(Qt::BackButton); + + QGraphicsSceneMouseEvent mouseBackReleaseEvent(QEvent::GraphicsSceneMouseRelease); + mouseBackReleaseEvent.setPos(pos); + mouseBackReleaseEvent.setButton(Qt::BackButton); + mouseBackReleaseEvent.setButtons(Qt::NoButton); + + QGraphicsSceneMouseEvent mouseBackDoubleClickEvent(QEvent::GraphicsSceneMouseDoubleClick); + mouseBackDoubleClickEvent.setPos(pos); + mouseBackDoubleClickEvent.setButton(Qt::BackButton); + mouseBackDoubleClickEvent.setButtons(Qt::BackButton); + QSignalSpy spyItemActivated(m_controller, &KItemListController::itemActivated); // Default setting: single click activation. @@ -638,6 +673,29 @@ void KItemListControllerTest::testMouseClickActivation() spyItemActivated.clear(); QVERIFY(m_view->controller()->selectionManager()->hasSelection()); + // emulation of double click according to https://doc.qt.io/qt-6/qgraphicsscene.html#mouseDoubleClickEvent + m_view->event(&mousePressEvent); + m_view->event(&mouseReleaseEvent); + m_view->event(&mouseDoubleClickEvent); + m_view->event(&mouseReleaseEvent); + QCOMPARE(spyItemActivated.count(), 1); + spyItemActivated.clear(); + QVERIFY2(!m_view->controller()->selectionManager()->hasSelection(), "An item should not be implicitly selected during activation. @see bug 424723"); + + // right mouse button should not trigger activation + m_view->event(&mouseRightPressEvent); + m_view->event(&mouseRightReleaseEvent); + m_view->event(&mouseRightDoubleClickEvent); + m_view->event(&mouseRightReleaseEvent); + QCOMPARE(spyItemActivated.count(), 0); + + // back mouse button should not trigger activation + m_view->event(&mouseBackPressEvent); + m_view->event(&mouseBackReleaseEvent); + m_view->event(&mouseBackDoubleClickEvent); + m_view->event(&mouseBackReleaseEvent); + QCOMPARE(spyItemActivated.count(), 0); + // Enforce single click activation in the controller. m_controller->setSingleClickActivationEnforced(true); m_view->event(&mousePressEvent); |
