diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2013-10-22 14:06:29 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-23 10:19:10 +0200 |
commit | aa7fa093126f4ce9204b0d8efa7f9e8762847905 (patch) | |
tree | 629de3d8abd76addf64298f7206c6c1fa081da95 /src/platformsupport/fbconvenience/qfbwindow.cpp | |
parent | bd3f3f31bf15f966d9d1ae0974fbc4028e6ed17e (diff) |
Android/LinuxFb: fix QWidget::showFullScreen()
Previously, showFullScreen() had a race condition: it depended
on QFbScreen::setGeometry() being called after the window state was
set (that would trigger QPlatformScreen::resizeMaximizedWindows(), which
was the only part of the code that reacted to WindowFullScreen).
On Android this caused random behaviour.
Task-number: QTBUG-33294
Change-Id: I228e6af4139af1a47387e7d80757d7b46e859580
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/platformsupport/fbconvenience/qfbwindow.cpp')
-rw-r--r-- | src/platformsupport/fbconvenience/qfbwindow.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/platformsupport/fbconvenience/qfbwindow.cpp b/src/platformsupport/fbconvenience/qfbwindow.cpp index 246f50b4a9..8b6186db79 100644 --- a/src/platformsupport/fbconvenience/qfbwindow.cpp +++ b/src/platformsupport/fbconvenience/qfbwindow.cpp @@ -77,6 +77,26 @@ void QFbWindow::setGeometry(const QRect &rect) QPlatformWindow::setGeometry(rect); } +void QFbWindow::setVisible(bool visible) +{ + if (visible) { + if (mWindowState & Qt::WindowFullScreen) + setGeometry(platformScreen()->geometry()); + else if (mWindowState & Qt::WindowMaximized) + setGeometry(platformScreen()->availableGeometry()); + } + QPlatformWindow::setVisible(visible); +} + + +void QFbWindow::setWindowState(Qt::WindowState state) +{ + QPlatformWindow::setWindowState(state); + mWindowState = state; + platformScreen()->invalidateRectCache(); +} + + void QFbWindow::setWindowFlags(Qt::WindowFlags flags) { mWindowFlags = flags; |