diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-09-25 14:10:58 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-09-30 15:16:58 +0200 |
commit | 5c7307775d32ae0a54acad8ae7a1c9d3cff7d45e (patch) | |
tree | 39bd80f094c63b32a1370ac7c6e95a0ff5f79518 | |
parent | 5add30c8cabea326f67564e41060a5c0fec6acd7 (diff) |
Emit QScreen::geometryChanged when the logical DPI changes
Add the missing call to QScreenPrivate::emitGeometryChangeSignals()
along with an emission of physicalDotsPerInchChanged()
since that is calculated from geometry and physical size.
Rearrange the code in
QGuiApplicationPrivate::processScreenGeometryChange()
to prevent duplicate emissions of geometryChanged(),
physicalDotsPerInchChanged() which this change would introduce.
Amends 5290027e3bab75f14fc0a2b7c206594d9cb91e76.
Pick-to: 5.15
Task-number: QTBUG-76902
Task-number: QTBUG-79248
Fixes: QTBUG-86604
Change-Id: I3dc2ec5ccd9c6413e92f9246242f323e8afc5e57
Reviewed-by: David Edmundson <davidedmundson@kde.org>
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 11 | ||||
-rw-r--r-- | src/gui/kernel/qscreen.cpp | 6 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 701cd06a09..a022e9a151 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -3073,21 +3073,20 @@ 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()); if (s->primaryOrientation() != primaryOrientation) emit s->primaryOrientationChanged(s->primaryOrientation()); } - s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged); - resetCachedDevicePixelRatio(); } diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index 7cc88af302..8fb8eecc91 100644 --- 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); @@ -96,6 +99,9 @@ void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availa for (QScreen* sibling : siblings) emit sibling->virtualGeometryChanged(sibling->virtualGeometry()); } + + if (geometryChanged) + emit q->physicalDotsPerInchChanged(q->physicalDotsPerInch()); } void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen) |