+void KItemListControllerTest::testMouseClickActivation()
+{
+ m_view->setItemLayout(KFileItemListView::IconsLayout);
+
+ // Make sure that we have a large window, such that
+ // the items are visible and clickable.
+ adjustGeometryForColumnCount(5);
+
+ // Make sure that the first item is visible in the view.
+ m_view->setScrollOffset(0);
+ QCOMPARE(m_view->firstVisibleIndex(), 0);
+
+ const QPointF pos = m_view->itemContextRect(0).center();
+
+ // Save the "single click" setting.
+ const bool restoreSettingsSingleClick = m_testStyle->activateItemOnSingleClick();
+
+ QGraphicsSceneMouseEvent mousePressEvent(QEvent::GraphicsSceneMousePress);
+ mousePressEvent.setPos(pos);
+ mousePressEvent.setButton(Qt::LeftButton);
+ mousePressEvent.setButtons(Qt::LeftButton);
+
+ QGraphicsSceneMouseEvent mouseReleaseEvent(QEvent::GraphicsSceneMouseRelease);
+ mouseReleaseEvent.setPos(pos);
+ mouseReleaseEvent.setButton(Qt::LeftButton);
+ mouseReleaseEvent.setButtons(Qt::NoButton);
+
+ QSignalSpy spyItemActivated(m_controller, SIGNAL(itemActivated(int)));
+
+ // Default setting: single click activation.
+ m_testStyle->setActivateItemOnSingleClick(true);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 1);
+ spyItemActivated.clear();
+
+ // Set the global setting to "double click activation".
+ m_testStyle->setActivateItemOnSingleClick(false);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 0);
+ spyItemActivated.clear();
+
+ // Enforce single click activation in the controller.
+ m_controller->setSingleClickActivationEnforced(true);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 1);
+ spyItemActivated.clear();
+
+ // Do not enforce single click activation in the controller.
+ m_controller->setSingleClickActivationEnforced(false);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 0);
+ spyItemActivated.clear();
+
+ // Set the global setting back to "single click activation".
+ m_testStyle->setActivateItemOnSingleClick(true);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 1);
+ spyItemActivated.clear();
+
+ // Enforce single click activation in the controller.
+ m_controller->setSingleClickActivationEnforced(true);
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 1);
+ spyItemActivated.clear();
+
+ // Restore previous settings.
+ m_controller->setSingleClickActivationEnforced(true);
+ m_testStyle->setActivateItemOnSingleClick(restoreSettingsSingleClick);
+}
+