From 08a62af7c58927c37a92a5749bc87be1ae3d6d2d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 1 Apr 2016 14:53:35 +0200 Subject: Windows QPA: Don't send geometry change after window creation for maximized/fullscreen. For these states, geometry change will be sent from the code called by setWindowState(); the geometry obtained immediately after window creation is then no longer valid. Task-number: QTBUG-52231 Change-Id: Ia7cbe95e73c5dd4126bb63d448b83f2cab6a53a1 Reviewed-by: Oliver Wolff --- src/plugins/platforms/windows/qwindowsintegration.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/plugins/platforms/windows/qwindowsintegration.cpp') diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 27ec258f37..bf238c3e77 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -318,10 +318,14 @@ QPlatformWindow *QWindowsIntegration::createPlatformWindow(QWindow *window) cons if (requested.flags != obtained.flags) window->setFlags(obtained.flags); - // Trigger geometry/screen change signals of QWindow. + // Trigger geometry change (unless it has a special state in which case setWindowState() + // will send the message) and screen change signals of QWindow. if ((obtained.flags & Qt::Desktop) != Qt::Desktop) { - if (requested.geometry != obtained.geometry) + const Qt::WindowState state = window->windowState(); + if (state != Qt::WindowMaximized && state != Qt::WindowFullScreen + && requested.geometry != obtained.geometry) { QWindowSystemInterface::handleGeometryChange(window, obtained.geometry); + } QPlatformScreen *screen = result->screenForGeometry(obtained.geometry); if (screen && result->screen() != screen) QWindowSystemInterface::handleWindowScreenChanged(window, screen->screen()); -- cgit v1.2.3