summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/kernel/qwidget_window
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-08-31 13:10:18 +0200
committerLiang Qi <liang.qi@qt.io>2017-08-31 14:31:31 +0200
commit112a4af10741409b3d8503cb77852a777b607ce0 (patch)
treefa99f0f37fc1505522fe9368e95484c7732ccda8 /tests/auto/widgets/kernel/qwidget_window
parent29ef0d2bccd1874e20de94485ee05777c3a95c5d (diff)
parente938150412d22e61926fe16791158805b71268bb (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: examples/examples.pro qmake/library/qmakebuiltins.cpp src/corelib/global/qglobal.cpp Re-apply b525ec2 to qrandom.cpp(code movement in 030782e) src/corelib/global/qnamespace.qdoc src/corelib/global/qrandom.cpp src/gui/kernel/qwindow.cpp Re-apply a3d59c7 to QWindowPrivate::setVisible() (code movement in d7a9e08) src/network/ssl/qsslkey_openssl.cpp src/plugins/platforms/android/androidjniinput.cpp src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/widgets/widgets/qmenu.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp Change-Id: If7ab427804408877a93cbe02079fca58e568bfd3
Diffstat (limited to 'tests/auto/widgets/kernel/qwidget_window')
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp31
1 files changed, 31 insertions, 0 deletions
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 a6855a417e..9dc513c115 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -104,6 +104,8 @@ private slots:
void setWindowState();
void nativeShow();
+
+ void QTBUG_56277_resize_on_showEvent();
};
void tst_QWidget_window::initTestCase()
@@ -931,5 +933,34 @@ void tst_QWidget_window::nativeShow()
QTRY_VERIFY(!w.isVisible());
}
+class ResizedOnShowEventWidget : public QWidget
+{
+public:
+ void showEvent(QShowEvent *) override
+ {
+ const auto *primaryScreen = QApplication::primaryScreen();
+ auto newSize = primaryScreen->availableGeometry().size() / 4;
+ if (newSize == geometry().size())
+ newSize -= QSize(10, 10);
+ resize(newSize);
+ }
+};
+
+void tst_QWidget_window::QTBUG_56277_resize_on_showEvent()
+{
+ const auto platformName = QGuiApplication::platformName().toLower();
+ if (platformName != "cocoa" && platformName != "windows")
+ QSKIP("This can only be consistently tested on desktop platforms with well-known behavior.");
+
+ ResizedOnShowEventWidget w;
+ w.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&w));
+ const auto *screen = w.windowHandle()->screen();
+ const auto geometry = w.geometry();
+ const int frameHeight = geometry.top() - w.frameGeometry().top();
+ const int topmostY = screen->availableGeometry().top() + frameHeight;
+ QVERIFY(geometry.top() > topmostY || geometry.left() > screen->availableGeometry().left());
+}
+
QTEST_MAIN(tst_QWidget_window)
#include "tst_qwidget_window.moc"