Test QWindow close() behavior
Verify that closing a QWindow using either the close() API or a close event works as expected, and that the window can be re-created. Also test QWindows with child windows. Task-number: QTBUG-46701 Change-Id: I4c12452ff58e1233536c2d6932e72cf924d8ed74 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>bb10
parent
7ba75d088c
commit
8c2fda1ef5
|
|
@ -1604,18 +1604,85 @@ void tst_QWindow::sizes()
|
|||
|
||||
void tst_QWindow::close()
|
||||
{
|
||||
QWindow a;
|
||||
a.setTitle(QLatin1String(QTest::currentTestFunction()));
|
||||
QWindow b;
|
||||
QWindow c(&a);
|
||||
{
|
||||
QWindow a;
|
||||
QWindow b;
|
||||
QWindow c(&a);
|
||||
|
||||
a.show();
|
||||
b.show();
|
||||
a.show();
|
||||
b.show();
|
||||
|
||||
// we can not close a non top level window
|
||||
QVERIFY(!c.close());
|
||||
QVERIFY(a.close());
|
||||
QVERIFY(b.close());
|
||||
// we can not close a non top level window
|
||||
QVERIFY(!c.close());
|
||||
QVERIFY(a.close());
|
||||
QVERIFY(b.close());
|
||||
}
|
||||
|
||||
// Verify that closing a QWindow deletes its platform window,
|
||||
// independent of API used to close the window.
|
||||
{
|
||||
// Close with QWindow::close
|
||||
{
|
||||
QWindow w;
|
||||
w.create();
|
||||
QVERIFY(w.handle());
|
||||
w.close();
|
||||
QVERIFY(!w.handle());
|
||||
}
|
||||
|
||||
// Close with QWindowSystemInterface::handleCloseEvent();
|
||||
{
|
||||
QWindow w;
|
||||
w.create();
|
||||
QVERIFY(w.handle());
|
||||
QWindowSystemInterface::handleCloseEvent(&w);
|
||||
QCoreApplication::processEvents();
|
||||
QVERIFY(!w.handle());
|
||||
}
|
||||
}
|
||||
|
||||
// Verify that closing a QWindow deletes the platform window for
|
||||
// child windows
|
||||
{
|
||||
QWindow w;
|
||||
QWindow c(&w);
|
||||
w.create();
|
||||
c.create();
|
||||
QVERIFY(w.handle());
|
||||
QVERIFY(c.handle());
|
||||
w.close();
|
||||
QVERIFY(!w.handle());
|
||||
QVERIFY(!c.handle());
|
||||
}
|
||||
|
||||
// Verify that re-creating closed windows is possble.
|
||||
{
|
||||
// Re-create top-level window
|
||||
{
|
||||
QWindow w;
|
||||
w.create();
|
||||
QVERIFY(w.handle());
|
||||
w.close();
|
||||
QVERIFY(!w.handle());
|
||||
w.create();
|
||||
QVERIFY(w.handle());
|
||||
}
|
||||
|
||||
// Re-create top-level window with child window
|
||||
{
|
||||
QWindow w;
|
||||
QWindow c(&w);
|
||||
c.create();
|
||||
QVERIFY(w.handle());
|
||||
QVERIFY(c.handle());
|
||||
w.close();
|
||||
QVERIFY(!w.handle());
|
||||
QVERIFY(!c.handle());
|
||||
c.create();
|
||||
QVERIFY(w.handle());
|
||||
QVERIFY(c.handle());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QWindow::activateAndClose()
|
||||
|
|
|
|||
Loading…
Reference in New Issue