xcb: use 128 as a reference DPI for small screens

This is a better version of 23b139038a1dc9a769a358ab112453abcdd39290
which was reverted.

Task-number: QTBUG-68620
Task-number: QTBUG-53022
Task-number: QTBUG-57211
Change-Id: I0b37fc261945c542bbfb30cecfe4b0a97c655e3c
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
Mathieu Velten 2018-06-06 18:07:03 +02:00
parent b4bd5f9df3
commit 5e6bbbc1b8

View File

@ -747,7 +747,11 @@ void QXcbScreen::updateGeometry(const QRect &geometry, uint8_t rotation)
m_sizeMillimeters = sizeInMillimeters(geometry.size(), m_virtualDesktop->dpi()); m_sizeMillimeters = sizeInMillimeters(geometry.size(), m_virtualDesktop->dpi());
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));
// Use 128 as a reference DPI on small screens. This favors "small UI" over "large UI".
qreal referenceDpi = physicalSize().width() <= 320 ? 128 : 96;
m_pixelDensity = qMax(1, qRound(dpi/referenceDpi));
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);