iOS: Always update screen properties on status bar orientation change

If we move from landscape to inverse landscape orientation, the window
will not lay out, so we won't hit viewWillLayoutSubviews, but we still
need to reflect the new orientation of the screen.

Task-number: QTBUG-137249
Pick-to: 6.8
Change-Id: I9655052772990ca524c5b94e25b2c58cc058ff67
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit c604f2031a2147f1257f7f19edfb5c2487a379d7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 1d9432cf79df07a47f77596461bd90cbda9f383f)
This commit is contained in:
Tor Arne Vestbø 2025-06-02 13:25:44 +02:00 committed by Qt Cherry-pick Bot
parent c3b8e24a8d
commit e0b196940a

View File

@ -367,10 +367,12 @@
// If the statusbar changes orientation due to auto-rotation we don't care,
// there will be re-layout anyways. Only if the statusbar changes due to
// reportContentOrientation, we need to update the window layout.
if (self.changingOrientation)
return;
if (!self.changingOrientation)
[self.view setNeedsLayout];
[self.view setNeedsLayout];
// But we always need to update the screen's orientation
if (self.platformScreen)
self.platformScreen->updateProperties();
}
#endif
@ -379,6 +381,9 @@
if (!QCoreApplication::instance())
return;
// Make sure the screen properties are up to date before layout.
// We need this here, even if we also react to status bar orientation
// changes, as only the main screen on iOS has a statusbar.
if (self.platformScreen)
self.platformScreen->updateProperties();
}