summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/kernel')
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp69
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp53
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;