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 5290027e3b.
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>
bb10
parent
5add30c8ca
commit
5c7307775d
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue