summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@nokia.com>2010-11-15 12:47:53 (GMT)
committerMorten Johan Sørvig <morten.sorvig@nokia.com>2010-11-15 12:48:37 (GMT)
commitabba37cd0eff959edf2d011842cbf2b36cce8467 (patch)
tree451f94e9d9187e6b660362f4134f08b13e4dcfb0 /src/gui
parent759c0b5ecf84201f36d44b4e6c46da1886d85dee (diff)
downloadQt-abba37cd0eff959edf2d011842cbf2b36cce8467.zip
Qt-abba37cd0eff959edf2d011842cbf2b36cce8467.tar.gz
Qt-abba37cd0eff959edf2d011842cbf2b36cce8467.tar.bz2
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.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qwidget.cpp17
1 files 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;