summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-12-11 01:00:10 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2019-12-11 14:50:53 +0100
commita4a7c1bcf7595e2645c570d9c824532acf524fdf (patch)
treec57de9a148d02529836e74c50e308a7ac50d8550 /tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
parentbef74b6c3a0a9c8649ea8eb333d80015f76863e4 (diff)
parente6de661a8aa96b5905ea7ba4cd5d76bd06da3f93 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp Change-Id: I6b82507bf9a80a374c40393e72f4843f1557de89
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp')
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 6f8fd5dcbe..dd747a8616 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -60,6 +60,7 @@
#include <QtGui/qpaintengine.h>
#include <QtGui/qbackingstore.h>
#include <QtGui/qguiapplication.h>
+#include <QtGui/qpa/qplatformwindow.h>
#include <QtGui/qscreen.h>
#include <qmenubar.h>
#include <qcompleter.h>
@@ -227,6 +228,7 @@ private slots:
void setFixedSize();
void ensureCreated();
+ void createAndDestroy();
void winIdChangeEvent();
void persistentWinId();
void showNativeChild();
@@ -4250,6 +4252,58 @@ public:
int winIdChangeEventCount() const { return m_winIdList.count(); }
};
+class CreateDestroyWidget : public WinIdChangeWidget
+{
+public:
+ void create() { QWidget::create(); }
+ void destroy() { QWidget::destroy(); }
+};
+
+void tst_QWidget::createAndDestroy()
+{
+ CreateDestroyWidget widget;
+
+ // Create and destroy via QWidget
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 1);
+ QVERIFY(widget.internalWinId());
+
+ widget.destroy();
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 2);
+ QVERIFY(!widget.internalWinId());
+
+ // Create via QWidget, destroy via QWindow
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 3);
+ QVERIFY(widget.internalWinId());
+
+ widget.windowHandle()->destroy();
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 4);
+ QVERIFY(!widget.internalWinId());
+
+ // Create via QWidget again
+ widget.create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 5);
+ QVERIFY(widget.internalWinId());
+
+ // Destroy via QWindow, create via QWindow
+ widget.windowHandle()->destroy();
+ QVERIFY(widget.windowHandle());
+ QVERIFY(!widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 6);
+ QVERIFY(!widget.internalWinId());
+
+ widget.windowHandle()->create();
+ QVERIFY(widget.testAttribute(Qt::WA_WState_Created));
+ QCOMPARE(widget.winIdChangeEventCount(), 7);
+ QVERIFY(widget.internalWinId());
+}
+
void tst_QWidget::winIdChangeEvent()
{
{