diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-05-03 13:50:46 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2011-08-11 08:28:16 (GMT) |
commit | e9040d183dce6188ae9d1493167cb7247a6d4a7b (patch) | |
tree | 3ffdd88bbae3bb970bce7a4679cf1651b9635a5c /src | |
parent | d4a2ce8ad5be6633f0e5c5a74eaa8b9c32c02ba8 (diff) | |
download | Qt-e9040d183dce6188ae9d1493167cb7247a6d4a7b.zip Qt-e9040d183dce6188ae9d1493167cb7247a6d4a7b.tar.gz Qt-e9040d183dce6188ae9d1493167cb7247a6d4a7b.tar.bz2 |
Do not allow fullscreen/maximized windows to expand beyond client rect
Automatic layouting of widgets still managed to layout maximized and
fullscreen windows larger than client rect in Symbian in some cases.
Fixed by limiting window dimensions to client area boundaries in
setGeometry_sys if the window is maximized or fullscreen.
Task-number: QTBUG-5697
Reviewed-by: Sami Merila
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qwidget_s60.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index ada85ce..e437579 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -235,19 +235,21 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) QSize oldSize(q->size()); QRect oldGeom(data.crect); - // Lose maximized status if deliberate resize - if (w != oldSize.width() || h != oldSize.height()) - data.window_state &= ~Qt::WindowMaximized; - bool checkExtra = true; - if (q->isWindow() && (data.window_state & Qt::WindowFullScreen)) { - // Do not modity window size for fullscreen windows, if requested - // size is already equal to clientRect. + if (q->isWindow() && (data.window_state & (Qt::WindowFullScreen | Qt::WindowMaximized))) { + // Do not allow fullscreen/maximized windows to expand beyond client rect TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect(); + w = qMin(w, r.Width()); + h = qMin(h, r.Height()); + if (w == r.Width() && h == r.Height()) checkExtra = false; } + // Lose maximized status if deliberate resize + if (w != oldSize.width() || h != oldSize.height()) + data.window_state &= ~Qt::WindowMaximized; + if (checkExtra && extra) { // any size restrictions? w = qMin(w,extra->maxw); h = qMin(h,extra->maxh); |