diff options
Diffstat (limited to 'src/gui/kernel/qscreen.cpp')
-rw-r--r-- | src/gui/kernel/qscreen.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index d5a4b7c027..df628fcc73 100644 --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -77,15 +77,33 @@ QScreen::QScreen(QPlatformScreen *screen) d->setPlatformScreen(screen); } +void QScreenPrivate::updateGeometriesWithSignals() +{ + const QRect oldGeometry = geometry; + const QRect oldAvailableGeometry = availableGeometry; + updateHighDpi(); + emitGeometryChangeSignals(oldGeometry != geometry, oldAvailableGeometry != availableGeometry); +} + +void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged) +{ + Q_Q(QScreen); + if (availableGeometryChanged) + emit q->availableGeometryChanged(availableGeometry); + + if (geometryChanged || availableGeometryChanged) { + const auto siblings = q->virtualSiblings(); + for (QScreen* sibling : siblings) + emit sibling->virtualGeometryChanged(sibling->virtualGeometry()); + } +} + void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen) { Q_Q(QScreen); platformScreen = screen; platformScreen->d_func()->screen = q; orientation = platformScreen->orientation(); - geometry = platformScreen->deviceIndependentGeometry(); - availableGeometry = QHighDpi::fromNative(platformScreen->availableGeometry(), - QHighDpiScaling::factor(platformScreen), geometry.topLeft()); logicalDpi = QPlatformScreen::overrideDpi(platformScreen->logicalDpi()); |