diff options
Diffstat (limited to 'src/plugins/platforms/ios/qioswindow.mm')
-rw-r--r-- | src/plugins/platforms/ios/qioswindow.mm | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 66552fae4f..0dd810bdf6 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -581,6 +581,14 @@ void QIOSWindow::applyGeometry(const QRect &rect) void QIOSWindow::setWindowState(Qt::WindowState state) { + // Update the QWindow representation straight away, so that + // we can update the statusbar visibility based on the new + // state before applying geometry changes. + qt_window_private(window())->windowState = state; + + if (window()->isTopLevel() && window()->isVisible() && window()->isActive()) + static_cast<QIOSScreen *>(screen())->updateStatusBarVisibility(); + switch (state) { case Qt::WindowNoState: applyGeometry(m_normalGeometry); @@ -599,14 +607,6 @@ void QIOSWindow::setWindowState(Qt::WindowState state) default: Q_UNREACHABLE(); } - - if (window()->isTopLevel() && window()->isVisible() && window()->isActive()) { - // The window state of the QWindow is not updated until after - // we return from this method, so we have to defer any updates - // of the statusbar that depend on the current window state. - QMetaObject::invokeMethod(static_cast<QIOSScreen *>(screen()), - "updateStatusBarVisibility", Qt::QueuedConnection); - } } void QIOSWindow::setParent(const QPlatformWindow *parentWindow) |