diff options
author | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2010-11-15 12:47:53 (GMT) |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2010-11-15 12:48:37 (GMT) |
commit | abba37cd0eff959edf2d011842cbf2b36cce8467 (patch) | |
tree | 451f94e9d9187e6b660362f4134f08b13e4dcfb0 /src/gui | |
parent | 759c0b5ecf84201f36d44b4e6c46da1886d85dee (diff) | |
download | Qt-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.cpp | 17 |
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; |