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>
This commit is contained in:
parent
5add30c8ca
commit
5c7307775d
@ -3073,21 +3073,20 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP
|
|||||||
bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry;
|
bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry;
|
||||||
s->d_func()->availableGeometry = e->availableGeometry;
|
s->d_func()->availableGeometry = e->availableGeometry;
|
||||||
|
|
||||||
if (geometryChanged) {
|
const Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
|
||||||
Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
|
if (geometryChanged)
|
||||||
s->d_func()->updatePrimaryOrientation();
|
s->d_func()->updatePrimaryOrientation();
|
||||||
|
|
||||||
emit s->geometryChanged(s->geometry());
|
s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged);
|
||||||
|
|
||||||
|
if (geometryChanged) {
|
||||||
emit s->physicalSizeChanged(s->physicalSize());
|
emit s->physicalSizeChanged(s->physicalSize());
|
||||||
emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch());
|
|
||||||
emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch());
|
emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch());
|
||||||
|
|
||||||
if (s->primaryOrientation() != primaryOrientation)
|
if (s->primaryOrientation() != primaryOrientation)
|
||||||
emit s->primaryOrientationChanged(s->primaryOrientation());
|
emit s->primaryOrientationChanged(s->primaryOrientation());
|
||||||
}
|
}
|
||||||
|
|
||||||
s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged);
|
|
||||||
|
|
||||||
resetCachedDevicePixelRatio();
|
resetCachedDevicePixelRatio();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +88,9 @@ void QScreenPrivate::updateGeometriesWithSignals()
|
|||||||
void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged)
|
void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged)
|
||||||
{
|
{
|
||||||
Q_Q(QScreen);
|
Q_Q(QScreen);
|
||||||
|
if (geometryChanged)
|
||||||
|
emit q->geometryChanged(geometry);
|
||||||
|
|
||||||
if (availableGeometryChanged)
|
if (availableGeometryChanged)
|
||||||
emit q->availableGeometryChanged(availableGeometry);
|
emit q->availableGeometryChanged(availableGeometry);
|
||||||
|
|
||||||
@ -96,6 +99,9 @@ void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availa
|
|||||||
for (QScreen* sibling : siblings)
|
for (QScreen* sibling : siblings)
|
||||||
emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
|
emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (geometryChanged)
|
||||||
|
emit q->physicalDotsPerInchChanged(q->physicalDotsPerInch());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen)
|
void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user