--- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -3056,11 +3056,13 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry; s->d_func()->availableGeometry = e->availableGeometry; - if (geometryChanged) { - Qt::ScreenOrientation primaryOrientation = s->primaryOrientation(); + const Qt::ScreenOrientation primaryOrientation = s->primaryOrientation(); + if (geometryChanged) s->d_func()->updatePrimaryOrientation(); - emit s->geometryChanged(s->geometry()); + s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged); + + if (geometryChanged) { emit s->physicalSizeChanged(s->physicalSize()); emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch()); emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch()); @@ -3069,8 +3071,6 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP emit s->primaryOrientationChanged(s->primaryOrientation()); } - s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged); - resetCachedDevicePixelRatio(); } --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -88,6 +88,9 @@ void QScreenPrivate::updateGeometriesWithSignals() void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged) { Q_Q(QScreen); + if (geometryChanged) + emit q->geometryChanged(geometry); + if (availableGeometryChanged) emit q->availableGeometryChanged(availableGeometry);