summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-03-18 13:59:59 +0100
committerQt Continuous Integration System <qt-info@nokia.com>2010-03-18 13:59:59 +0100
commitf661bb26dc3b30c3d5113a56885bbe07b90fd3ce (patch)
tree4bfe6009988079c6cfcd6b8c23a1c6576dce5912 /tests
parent603a8501e0e203ecd6075b19be3bccb11f16ee88 (diff)
parent8ae6867b82bfdc391dab6d97945dea7c7436ef25 (diff)
Merge branch '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public into 4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/qt-s60-public: Made runonphone flush all application output. Update configure binary after -libinfix changes for Symbian. Build OpenVG on Symbian with QVG_RECREATE_ON_SIZE_CHANGE. Useful support for -qtlibinfix configure parameter in Symbian Fixed a bug where a proxy widget received FocusIn over and over. Fixed broken test.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp145
1 files changed, 83 insertions, 62 deletions
diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 69d2ad2b95..23b345838d 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -3426,85 +3426,106 @@ void tst_QGraphicsProxyWidget::clickFocus()
scene.setItemIndexMethod(QGraphicsScene::NoIndex);
QGraphicsProxyWidget *proxy = scene.addWidget(new QLineEdit);
- EventSpy proxySpy(proxy);
- EventSpy widgetSpy(proxy->widget());
-
QGraphicsView view(&scene);
- view.setFrameStyle(0);
- view.resize(300, 300);
- view.show();
-#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&view);
-#endif
- QApplication::setActiveWindow(&view);
- QTest::qWait(25);
- QTRY_COMPARE(QApplication::activeWindow(), &view);
- QVERIFY(!proxy->hasFocus());
- QVERIFY(!proxy->widget()->hasFocus());
+ {
+ EventSpy proxySpy(proxy);
+ EventSpy widgetSpy(proxy->widget());
- QCOMPARE(proxySpy.counts[QEvent::FocusIn], 0);
- QCOMPARE(proxySpy.counts[QEvent::FocusOut], 0);
- QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 0);
- QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 0);
+ view.setFrameStyle(0);
+ view.resize(300, 300);
+ view.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
+ QApplication::setActiveWindow(&view);
+ QTest::qWait(25);
+ QTRY_COMPARE(QApplication::activeWindow(), &view);
- QPointF lineEditCenter = proxy->mapToScene(proxy->boundingRect().center());
- // Spontaneous mouse click sets focus on a clickable widget.
- for (int retry = 0; retry < 50 && !proxy->hasFocus(); retry++)
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
- QVERIFY(proxy->hasFocus());
- QVERIFY(proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusIn], 1);
- QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 1);
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
- scene.setFocusItem(0);
- QVERIFY(!proxy->hasFocus());
- QVERIFY(!proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusOut], 1);
- QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 1);
+ QCOMPARE(proxySpy.counts[QEvent::FocusIn], 0);
+ QCOMPARE(proxySpy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 0);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 0);
- // Non-spontaneous mouse click sets focus if the widget has been clicked before
- {
- QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
- event.setScenePos(lineEditCenter);
- event.setButton(Qt::LeftButton);
- qApp->sendEvent(&scene, &event);
+ QPointF lineEditCenter = proxy->mapToScene(proxy->boundingRect().center());
+ // Spontaneous mouse click sets focus on a clickable widget.
+ for (int retry = 0; retry < 50 && !proxy->hasFocus(); retry++)
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
QVERIFY(proxy->hasFocus());
QVERIFY(proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusIn], 2);
- QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 2);
+ QCOMPARE(proxySpy.counts[QEvent::FocusIn], 1);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 1);
+
+ scene.setFocusItem(0);
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
+ QCOMPARE(proxySpy.counts[QEvent::FocusOut], 1);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 1);
+
+ // Non-spontaneous mouse click sets focus if the widget has been clicked before
+ {
+ QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
+ event.setScenePos(lineEditCenter);
+ event.setButton(Qt::LeftButton);
+ qApp->sendEvent(&scene, &event);
+ QVERIFY(proxy->hasFocus());
+ QVERIFY(proxy->widget()->hasFocus());
+ QCOMPARE(proxySpy.counts[QEvent::FocusIn], 2);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 2);
+ }
}
scene.setFocusItem(0);
proxy->setWidget(new QLineEdit); // resets focusWidget
- QVERIFY(!proxy->hasFocus());
- QVERIFY(!proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusOut], 2);
- QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 2);
- // Non-spontaneous mouse click does not set focus on the embedded widget.
{
- QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
- event.setScenePos(lineEditCenter);
- event.setButton(Qt::LeftButton);
- qApp->sendEvent(&scene, &event);
+ QPointF lineEditCenter = proxy->mapToScene(proxy->boundingRect().center());
+ EventSpy proxySpy(proxy);
+ EventSpy widgetSpy(proxy->widget());
QVERIFY(!proxy->hasFocus());
QVERIFY(!proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusIn], 2);
- QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 2);
- }
+ QCOMPARE(proxySpy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 0);
- scene.setFocusItem(0);
- QVERIFY(!proxy->hasFocus());
- QVERIFY(!proxy->widget()->hasFocus());
- QCOMPARE(proxySpy.counts[QEvent::FocusOut], 2);
- QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 2);
-
- // Spontaneous click on non-clickable widget does not give focus.
- proxy->widget()->setFocusPolicy(Qt::NoFocus);
- QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
- QVERIFY(!proxy->hasFocus());
- QVERIFY(!proxy->widget()->hasFocus());
+ // Non-spontaneous mouse click does not set focus on the embedded widget.
+ {
+ QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
+ event.setScenePos(lineEditCenter);
+ event.setButton(Qt::LeftButton);
+ qApp->sendEvent(&scene, &event);
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
+ QCOMPARE(proxySpy.counts[QEvent::FocusIn], 0);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 0);
+ }
+
+ scene.setFocusItem(0);
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
+ QCOMPARE(proxySpy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(widgetSpy.counts[QEvent::FocusOut], 0);
+
+ // Spontaneous click on non-clickable widget does not give focus.
+ proxy->widget()->setFocusPolicy(Qt::NoFocus);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
+
+ // Multiple clicks should only result in one FocusIn.
+ proxy->widget()->setFocusPolicy(Qt::StrongFocus);
+ scene.setFocusItem(0);
+ QVERIFY(!proxy->hasFocus());
+ QVERIFY(!proxy->widget()->hasFocus());
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, view.mapFromScene(lineEditCenter));
+ QVERIFY(proxy->hasFocus());
+ QVERIFY(proxy->widget()->hasFocus());
+ QCOMPARE(widgetSpy.counts[QEvent::FocusIn], 1);
+ QCOMPARE(proxySpy.counts[QEvent::FocusIn], 1);
+ }
}
void tst_QGraphicsProxyWidget::windowFrameMargins()