┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-02-05 20:06:49 +0100
committerFrank Reininghaus <[email protected]>2013-02-05 20:07:05 +0100
commitec628cfa09ea3c33ef34607d5e91a23dcabd3106 (patch)
tree2404b053fc7aa07793ea0cc271ec323b653261b0
parent85ed71eb30487b653f01359e97371c6230737c44 (diff)
Add unit test for bug 313342
-rw-r--r--src/tests/kitemlistcontrollertest.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/tests/kitemlistcontrollertest.cpp b/src/tests/kitemlistcontrollertest.cpp
index 2085dead6..8044f9ac9 100644
--- a/src/tests/kitemlistcontrollertest.cpp
+++ b/src/tests/kitemlistcontrollertest.cpp
@@ -29,6 +29,11 @@
#include "kitemviews/private/kitemlistviewlayouter.h"
#include "testdir.h"
+#include <KConfigGroup>
+#include <KGlobalSettings>
+
+#include <QGraphicsSceneMouseEvent>
+
namespace {
const int DefaultTimeout = 2000;
};
@@ -51,6 +56,7 @@ private slots:
void testKeyboardNavigation_data();
void testKeyboardNavigation();
+ void testMouseClickActivation();
private:
/**
@@ -506,6 +512,108 @@ void KItemListControllerTest::testKeyboardNavigation()
}
}
+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.
+ QTest::keyClick(m_container, Qt::Key_End, Qt::NoModifier);
+ QTest::keyClick(m_container, Qt::Key_Home, Qt::NoModifier);
+ while (m_view->firstVisibleIndex() > 0) {
+ QTest::qWait(50);
+ }
+
+ const QPointF pos = m_view->itemContextRect(0).center();
+
+ // Save the "single click" setting.
+ const bool restoreKGlobalSettingsSingleClick = KGlobalSettings::singleClick();
+
+ KConfig config("kcminputrc");
+ KConfigGroup group = config.group("KDE");
+
+ 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.
+ group.writeEntry("SingleClick", true, KConfig::Persistent|KConfig::Global);
+ config.sync();
+ KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
+ while (!KGlobalSettings::singleClick()) {
+ QTest::qWait(50);
+ }
+ m_view->event(&mousePressEvent);
+ m_view->event(&mouseReleaseEvent);
+ QCOMPARE(spyItemActivated.count(), 1);
+ spyItemActivated.clear();
+
+ // Set the global setting to "double click activation".
+ group.writeEntry("SingleClick", false, KConfig::Persistent|KConfig::Global);
+ config.sync();
+ KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
+ while (KGlobalSettings::singleClick()) {
+ QTest::qWait(50);
+ }
+ 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".
+ group.writeEntry("SingleClick", true, KConfig::Persistent|KConfig::Global);
+ config.sync();
+ KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
+ while (!KGlobalSettings::singleClick()) {
+ QTest::qWait(50);
+ }
+ 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);
+ group.writeEntry("SingleClick", restoreKGlobalSettingsSingleClick, KConfig::Persistent|KConfig::Global);
+ config.sync();
+ KGlobalSettings::self()->emitChange(KGlobalSettings::SettingsChanged, KGlobalSettings::SETTINGS_MOUSE);
+ while (KGlobalSettings::singleClick() != restoreKGlobalSettingsSingleClick) {
+ QTest::qWait(50);
+ }
+}
+
void KItemListControllerTest::adjustGeometryForColumnCount(int count)
{
const QSize size = m_view->itemSize().toSize();