summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp133
1 files changed, 71 insertions, 62 deletions
diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 69d2ad2..17311e2 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -3426,85 +3426,94 @@ 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());
+ }
}
void tst_QGraphicsProxyWidget::windowFrameMargins()