diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-09-24 12:14:03 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-09-24 23:07:15 +0200 |
commit | 4b03b18548200db0ad65415c7df7a7665a9ec3d8 (patch) | |
tree | c44d136cef00d65b36a778832b416e94e4643916 /tests | |
parent | d41d4a0a358c98cbe56838b9fbb0ac422d43b15e (diff) |
Generate Show/Hide events for widgets when minimized state changes.
Fixes a regression against Qt 4, where Show/Hide events were received
when the minimized state changed.
It is restricted to QWidget so as not to introduce additional events
to QWindow (which already has signal visibilityChanged()) and cause
unexpected side effects in QQuickWindow.
Task-number: QTBUG-41312
Change-Id: Ib165a5daf7a7e5d8231ef8a94b70e8a2a3253057
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index 0de006a041..34bb4cfdf6 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -272,6 +272,7 @@ private slots: void showHideEvent_data(); void showHideEvent(); + void showHideEventWhileMinimize(); void lostUpdatesOnHide(); @@ -4087,6 +4088,29 @@ void tst_QWidget::showHideEvent() QCOMPARE(widget.numberOfHideEvents, expectedHideEvents); } +void tst_QWidget::showHideEventWhileMinimize() +{ + const QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration(); + if (!pi->hasCapability(QPlatformIntegration::MultipleWindows) + || !pi->hasCapability(QPlatformIntegration::NonFullScreenWindows) + || !pi->hasCapability(QPlatformIntegration::WindowManagement)) { + QSKIP("This test requires window management capabilities"); + } + // QTBUG-41312, hide, show events should be received during minimized. + ShowHideEventWidget widget; + widget.setWindowTitle(__FUNCTION__); + widget.resize(m_testWidgetSize); + centerOnScreen(&widget); + widget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&widget)); + const int showEventsBeforeMinimize = widget.numberOfShowEvents; + const int hideEventsBeforeMinimize = widget.numberOfHideEvents; + widget.showMinimized(); + QTRY_COMPARE(widget.numberOfHideEvents, hideEventsBeforeMinimize + 1); + widget.showNormal(); + QTRY_COMPARE(widget.numberOfShowEvents, showEventsBeforeMinimize + 1); +} + void tst_QWidget::update() { QTest::qWait(10); // Wait for the initStuff to do it's stuff. |