xcb: round down the scale factor for values < 0.8
This solves huge UI on some (most ?) HD 13 inches that have a calculated scale factor around 1.75. Task-number: QTBUG-53022 QTBUG-57211 Change-Id: I6cc22d3e47d38cb1d5a0daf5646a936256664e48 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
This commit is contained in:
parent
c1ead32a84
commit
23b139038a
@ -750,7 +750,12 @@ void QXcbScreen::updateGeometry(const QRect &geometry, uint8_t rotation)
|
|||||||
m_sizeMillimeters = sizeInMillimeters(geometry.size(), virtualDpi());
|
m_sizeMillimeters = sizeInMillimeters(geometry.size(), virtualDpi());
|
||||||
|
|
||||||
qreal dpi = geometry.width() / physicalSize().width() * qreal(25.4);
|
qreal dpi = geometry.width() / physicalSize().width() * qreal(25.4);
|
||||||
m_pixelDensity = qMax(1, qRound(dpi/96));
|
qreal rawFactor = dpi/96;
|
||||||
|
int roundedFactor = qFloor(rawFactor);
|
||||||
|
// Round up for .8 and higher. This favors "small UI" over "large UI".
|
||||||
|
if (rawFactor - roundedFactor >= 0.8)
|
||||||
|
roundedFactor = qCeil(rawFactor);
|
||||||
|
m_pixelDensity = qMax(1, roundedFactor);
|
||||||
m_geometry = geometry;
|
m_geometry = geometry;
|
||||||
m_availableGeometry = geometry & m_virtualDesktop->workArea();
|
m_availableGeometry = geometry & m_virtualDesktop->workArea();
|
||||||
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
|
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), m_geometry, m_availableGeometry);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user