diff options
Diffstat (limited to 'tests/auto/gui/kernel')
-rw-r--r-- | tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp | 69 | ||||
-rw-r--r-- | tests/auto/gui/kernel/qwindow/tst_qwindow.cpp | 53 |
2 files changed, 118 insertions, 4 deletions
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp index cc291f72fa..a7c38d6664 100644 --- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp +++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp @@ -336,12 +336,11 @@ class BlockableWindow : public QWindow Q_OBJECT public: int blocked; + int leaves; + int enters; inline BlockableWindow() - : QWindow() - { - blocked = false; - } + : QWindow(), blocked(false), enters(0), leaves(0) {} bool event(QEvent *e) { @@ -352,11 +351,23 @@ public: case QEvent::WindowUnblocked: --blocked; break; + case QEvent::Leave: + leaves++; + break; + case QEvent::Enter: + enters++; + break; default: break; } return QWindow::event(e); } + + void resetCounts() + { + leaves = 0; + enters = 0; + } }; void tst_QGuiApplication::modalWindow() @@ -391,6 +402,12 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // enter mouse in window1 + QWindowSystemInterface::handleEnterEvent(window1); + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 1); + QCOMPARE(window1->leaves, 0); + // show applicationModalWindow1, everything is blocked applicationModalWindow1->show(); QCOMPARE(app.modalWindow(), applicationModalWindow1); @@ -400,6 +417,24 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 1); QCOMPARE(applicationModalWindow1->blocked, 0); + // opening modal causes leave for previously entered window, but not others + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 1); + QCOMPARE(window1->leaves, 1); + QCOMPARE(window2->enters, 0); + QCOMPARE(window2->leaves, 0); + QCOMPARE(applicationModalWindow1->enters, 0); + QCOMPARE(applicationModalWindow1->leaves, 0); + window1->resetCounts(); + + // Try entering/leaving blocked window2 - no events should reach it + QWindowSystemInterface::handleEnterEvent(window2); + QGuiApplication::processEvents(); + QWindowSystemInterface::handleLeaveEvent(window2); + QGuiApplication::processEvents(); + QCOMPARE(window2->enters, 0); + QCOMPARE(window2->leaves, 0); + // everything is unblocked when applicationModalWindow1 is hidden applicationModalWindow1->hide(); QCOMPARE(app.modalWindow(), static_cast<QWindow *>(0)); @@ -409,6 +444,12 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // Enter window2 - should not be blocked + QWindowSystemInterface::handleEnterEvent(window2); + QGuiApplication::processEvents(); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 0); + // show the windowModalWindow1, only window1 is blocked windowModalWindow1->show(); QCOMPARE(app.modalWindow(), windowModalWindow1); @@ -418,6 +459,15 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 0); QCOMPARE(applicationModalWindow1->blocked, 0); + // opening window modal window doesn't cause leave for unblocked window + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 0); + QCOMPARE(window1->leaves, 0); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 0); + QCOMPARE(windowModalWindow1->enters, 0); + QCOMPARE(windowModalWindow1->leaves, 0); + // show the windowModalWindow2, windowModalWindow1 is blocked as well windowModalWindow2->show(); QCOMPARE(app.modalWindow(), windowModalWindow2); @@ -472,6 +522,17 @@ void tst_QGuiApplication::modalWindow() QCOMPARE(windowModalWindow2->blocked, 1); QCOMPARE(applicationModalWindow1->blocked, 0); + // window2 gets finally the leave + QGuiApplication::processEvents(); + QCOMPARE(window1->enters, 0); + QCOMPARE(window1->leaves, 0); + QCOMPARE(window2->enters, 1); + QCOMPARE(window2->leaves, 1); + QCOMPARE(windowModalWindow1->enters, 0); + QCOMPARE(windowModalWindow1->leaves, 0); + QCOMPARE(applicationModalWindow1->enters, 0); + QCOMPARE(applicationModalWindow1->leaves, 0); + // hide applicationModalWindow1, windowModalWindow1 and window1 are blocked applicationModalWindow1->hide(); QCOMPARE(app.modalWindow(), windowModalWindow2); diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp index 84ba1f4fdf..f85e48022a 100644 --- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp +++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp @@ -67,6 +67,7 @@ private slots: void touchCancel(); void touchCancelWithTouchToMouse(); void orientation(); + void sizes(); void close(); void activateAndClose(); void mouseEventSequence(); @@ -739,6 +740,58 @@ void tst_QWindow::orientation() QCOMPARE(spy.count(), 1); } +void tst_QWindow::sizes() +{ + QWindow window; + + QSignalSpy minimumWidthSpy(&window, SIGNAL(minimumWidthChanged(int))); + QSignalSpy minimumHeightSpy(&window, SIGNAL(minimumHeightChanged(int))); + QSignalSpy maximumWidthSpy(&window, SIGNAL(maximumWidthChanged(int))); + QSignalSpy maximumHeightSpy(&window, SIGNAL(maximumHeightChanged(int))); + + QSize oldMaximum = window.maximumSize(); + + window.setMinimumWidth(10); + QCOMPARE(window.minimumWidth(), 10); + QCOMPARE(window.minimumHeight(), 0); + QCOMPARE(window.minimumSize(), QSize(10, 0)); + QCOMPARE(window.maximumSize(), oldMaximum); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 0); + QCOMPARE(maximumWidthSpy.count(), 0); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMinimumHeight(10); + QCOMPARE(window.minimumWidth(), 10); + QCOMPARE(window.minimumHeight(), 10); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), oldMaximum); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 0); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMaximumWidth(100); + QCOMPARE(window.maximumWidth(), 100); + QCOMPARE(window.maximumHeight(), oldMaximum.height()); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), QSize(100, oldMaximum.height())); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 1); + QCOMPARE(maximumHeightSpy.count(), 0); + + window.setMaximumHeight(100); + QCOMPARE(window.maximumWidth(), 100); + QCOMPARE(window.maximumHeight(), 100); + QCOMPARE(window.minimumSize(), QSize(10, 10)); + QCOMPARE(window.maximumSize(), QSize(100, 100)); + QCOMPARE(minimumWidthSpy.count(), 1); + QCOMPARE(minimumHeightSpy.count(), 1); + QCOMPARE(maximumWidthSpy.count(), 1); + QCOMPARE(maximumHeightSpy.count(), 1); +} + void tst_QWindow::close() { QWindow a; |