File 0002-xcb-Use-the-screen-s-physical-DPI-as-logical-DPI-unl.patch of Package libqt5-qtbase.13634

From 267ab09b87dd7e2ae7dd3e85a76398506e7f1ae9 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 25 Apr 2018 18:34:01 +0200
Subject: [PATCH 2/2] xcb: Use the screen's physical DPI as logical DPI, unless
 overwritten

The size of the virtual screen is most of the time meaningless, as X fakes it
to result in 96 DPI, irregardless of the actual monitor DPI.

This results in wrong font rendering on non-96 DPI monitors.

Task-number: QTBUG-67928
---
 src/plugins/platforms/xcb/qxcbscreen.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Index: qtbase-opensource-src-5.9.6/src/plugins/platforms/xcb/qxcbscreen.cpp
===================================================================
--- qtbase-opensource-src-5.9.6.orig/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ qtbase-opensource-src-5.9.6/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -471,7 +471,15 @@ QDpi QXcbScreen::logicalDpi() const
     if (m_forcedDpi > 0) {
         return QDpi(m_forcedDpi, m_forcedDpi);
     }
-    return virtualDpi();
+
+    // By default, X fakes the virtual size to be 96 dpi (+-rounding),
+    // so if it's different the user overwrote it.
+    if (qRound(virtualDpi().first) != 96 ||
+        qRound(virtualDpi().second) != 96) {
+        return virtualDpi();
+    }
+
+    return QDpi(m_pixelDensity * 96, m_pixelDensity * 96);
 }
 
 qreal QXcbScreen::pixelDensity() const
openSUSE Build Service is sponsored by