diff --git a/fix-wayland-scaling-in-plasma.patch b/fix-wayland-scaling-in-plasma.patch new file mode 100644 index 0000000..e75b1ba --- /dev/null +++ b/fix-wayland-scaling-in-plasma.patch @@ -0,0 +1,79 @@ +From dc0016bc8d7e6c4456f4442c7ccf287bfc0c2e9b Mon Sep 17 00:00:00 2001 +From: Michael Weghorn +Date: Thu, 18 Nov 2021 21:15:10 +0100 +Subject: [PATCH] tdf#137924 qt (>=5.14): Use proper DPI without requiring + window handle + +For Qt >= 5.14, don't require a window handle to retrieve +the screen and then the associated DPI value from that one, +but directly use 'QWidget::screen' (introduced in QT 5.14) +to retrieve the screen. + +Previously, no DPI values would be set in case there was +no window handle. + +This makes UI scaling work without having to manually set +'SAL_FORCEDPI' on Wayland. + +While various UI elements (like e.g. the "Help" -> "About LibreOffice" +still look quite broken with the qt5 and kf5 VCL plugins +in a Plasma Wayland session (at least on my Debian testing with +Qt 5.15.2 and Plasma 5.23), they look OK +when using the qt6 VCL plugin with a custom build of qtbase +and qtwayland from Qt's "dev" git branches. + +Change-Id: I5feae46ed86a8b7d3cf92d4a973f7a0f9a9f95de +Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125507 +Tested-by: Jenkins +Reviewed-by: Michael Weghorn +--- + vcl/qt5/QtGraphics_GDI.cxx | 9 ++++++++- + vcl/qt5/QtSvpGraphics.cxx | 9 ++++++++- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/vcl/qt5/Qt5Graphics_GDI.cxx b/vcl/qt5/QtGraphics_GDI.cxx +index 0f9faa022d0b5..f87de50827dfc 100644 +--- a/vcl/qt5/Qt5Graphics_GDI.cxx ++++ b/vcl/qt5/Qt5Graphics_GDI.cxx +@@ -746,10 +746,17 @@ void QtGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) + return; + } + +- if (!m_pFrame || !m_pFrame->GetQWidget()->window()->windowHandle()) ++ if (!m_pFrame) ++ return; ++ ++#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) ++ QScreen* pScreen = m_pFrame->GetQWidget()->screen(); ++#else ++ if (!m_pFrame->GetQWidget()->window()->windowHandle()) + return; + + QScreen* pScreen = m_pFrame->GetQWidget()->window()->windowHandle()->screen(); ++#endif + rDPIX = pScreen->logicalDotsPerInchX() * pScreen->devicePixelRatio() + 0.5; + rDPIY = pScreen->logicalDotsPerInchY() * pScreen->devicePixelRatio() + 0.5; + } +diff --git a/vcl/qt5/Qt5SvpGraphics.cxx b/vcl/qt5/QtSvpGraphics.cxx +index b6018a95e2997..3632c8990706c 100644 +--- a/vcl/qt5/Qt5SvpGraphics.cxx ++++ b/vcl/qt5/Qt5SvpGraphics.cxx +@@ -102,10 +102,17 @@ void QtSvpGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) + return; + } + +- if (!m_pFrame || !m_pFrame->GetQWidget()->window()->windowHandle()) ++ if (!m_pFrame) ++ return; ++ ++#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) ++ QScreen* pScreen = m_pFrame->GetQWidget()->screen(); ++#else ++ if (!m_pFrame->GetQWidget()->window()->windowHandle()) + return; + + QScreen* pScreen = m_pFrame->GetQWidget()->window()->windowHandle()->screen(); ++#endif + rDPIX = pScreen->logicalDotsPerInchX() * pScreen->devicePixelRatio() + 0.5; + rDPIY = pScreen->logicalDotsPerInchY() * pScreen->devicePixelRatio() + 0.5; + } diff --git a/libreoffice.changes b/libreoffice.changes index 0d71c71..e80d854 100644 --- a/libreoffice.changes +++ b/libreoffice.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Dec 2 12:23:17 UTC 2021 - Cor Blom + +- Fix UI scaling on HIDPI Wayland/KDE screens + https://bugs.documentfoundation.org/show_bug.cgi?id=137924 + + fix-wayland-scaling-in-plasma.patch + ------------------------------------------------------------------- Wed Nov 24 16:33:53 UTC 2021 - Danilo Spinella diff --git a/libreoffice.spec b/libreoffice.spec index b4062e8..47746ab 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -105,6 +105,8 @@ Patch3: mediawiki-no-broken-help.diff # PATCH-FIX-OPENSUSE boo#1186110 fix GCC 11 error Patch6: gcc11-fix-error.patch Patch7: pld-skia-patches.patch +# PATCH-FIX-UPSTREAM https://bugs.documentfoundation.org/show_bug.cgi?id=137924 Use proper DPI without requiring window handle +Patch8: fix-wayland-scaling-in-plasma.patch # Build with java 8 Patch101: 0001-Revert-java-9-changes.patch # try to save space by using hardlinks @@ -984,6 +986,7 @@ Provides %{langname} translations and additional resources (help files, etc.) fo %patch3 %patch6 -p1 %patch7 -p1 +%patch8 -p1 %if 0%{?suse_version} < 1500 %patch101 -p1 %endif