diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/ios/qiosscreen.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qioswindow.mm | 16 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 7746163357..57522cb1a3 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -205,10 +205,14 @@ void QIOSScreen::updateStatusBarVisibility() } else #endif { + bool wasHidden = [UIApplication sharedApplication].statusBarHidden; QIOSViewController *viewController = static_cast<QIOSViewController *>(view.viewController); [[UIApplication sharedApplication] setStatusBarHidden:[viewController prefersStatusBarHidden] withAnimation:UIStatusBarAnimationNone]; + + if ([UIApplication sharedApplication].statusBarHidden != wasHidden) + updateProperties(); } } 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) |