summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro2
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp31
2 files changed, 32 insertions, 1 deletions
diff --git a/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro b/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
index baa2823f9a..d61681d5cb 100644
--- a/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
+++ b/tests/auto/widgets/kernel/qwidget_window/qwidget_window.pro
@@ -1,7 +1,7 @@
CONFIG += testcase
CONFIG += parallel_test
TARGET = tst_qwidget_window
-QT += widgets testlib
+QT += widgets testlib core-private gui-private
SOURCES += tst_qwidget_window.cpp
x11 {
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index 8084d50fbe..f9d705de26 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -52,6 +52,8 @@
#include <qlistwidget.h>
#include <qpushbutton.h>
#include <qboxlayout.h>
+#include <qlabel.h>
+#include <private/qwindow_p.h>
static inline void setFrameless(QWidget *w)
{
@@ -97,6 +99,7 @@ private slots:
#endif
void tst_qtbug35600();
+ void tst_updateWinId_QTBUG40681();
};
void tst_QWidget_window::initTestCase()
@@ -603,5 +606,33 @@ void tst_QWidget_window::tst_qtbug35600()
// QTBUG-35600: program may crash here or on exit
}
+void tst_QWidget_window::tst_updateWinId_QTBUG40681()
+{
+ QWidget w;
+ QVBoxLayout *vl = new QVBoxLayout(&w);
+ QLabel *lbl = new QLabel("HELLO1");
+ lbl->setAttribute(Qt::WA_NativeWindow);
+ lbl->setObjectName("label1");
+ vl->addWidget(lbl);
+ w.setMinimumWidth(200);
+
+ w.show();
+
+ QVERIFY(QTest::qWaitForWindowExposed(&w));
+
+ QCOMPARE(lbl->winId(), lbl->windowHandle()->winId());
+
+ // simulate screen change and notification
+ QWindow *win = w.windowHandle();
+ w.windowHandle()->destroy();
+ lbl->windowHandle()->destroy();
+ w.windowHandle()->create();
+ lbl->windowHandle()->create();
+ QWindowPrivate *p = qt_window_private(win);
+ p->emitScreenChangedRecursion(win->screen());
+
+ QCOMPARE(lbl->winId(), lbl->windowHandle()->winId());
+}
+
QTEST_MAIN(tst_QWidget_window)
#include "tst_qwidget_window.moc"