From abba37cd0eff959edf2d011842cbf2b36cce8467 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Mon, 15 Nov 2010 13:47:53 +0100 Subject: [PATCH] Improve restoring of miximized window geomertry. Task-number: QTBUG-2064 Follow-up commit to 54865d47cfd, which caused a regression on multi-display systems on Windows. --- src/gui/kernel/qwidget.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index cd1c9f0..7714acb 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -7051,13 +7051,16 @@ bool QWidget::restoreGeometry(const QByteArray &geometry) restoredNormalGeometry.moveTop(qMax(restoredNormalGeometry.top(), availableGeometry.top() + frameHeight)); if (maximized || fullScreen) { - // set geomerty before setting the window state to make - // sure the window is maximized to the right screen. - // Skip on windows: the window is restored into a broken - // half-maximized state. -#ifndef Q_WS_WIN - setGeometry(restoredNormalGeometry); -#endif + // Set the geomerty before setting the maximized/fullscreen + // window state to make sure the window is maximized to the + // correct screen. Clear the window state before setting the + // geometry to prevent a bug where the window is restored to + // an inconsitent state on Windows. + if (desktop->screenNumber(restoredNormalGeometry.center()) != desktop->screenNumber(this)) { + setWindowState(Qt::WindowNoState); + setGeometry(restoredNormalGeometry); + } + Qt::WindowStates ws = windowState(); if (maximized) ws |= Qt::WindowMaximized; -- 2.1.4