diff --git a/gnu/local.mk b/gnu/local.mk index 237b0ca6c6..c7db93ecd6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2320,6 +2320,7 @@ dist_patch_DATA = \ %D%/packages/patches/qtwayland-5.15.18-0053-client-remove-some-surface-commits.patch \ %D%/packages/patches/qtwayland-5.15.18-0054-client-avoid-locking-resizing-in-qwaylandshmbackings.patch \ %D%/packages/patches/qtwayland-5.15.18-0055-bradient-use-qwaylandwindow-actual-window-title.patch \ + %D%/packages/patches/qtwayland-5.15.18-0056-redraw-hidpi.patch \ %D%/packages/patches/qtwebsockets-6.9-fix-tst_QWebSocket.patch\ %D%/packages/patches/rabbitmq-defaults.patch \ %D%/packages/patches/radare2-fix-meson-build-to-use-sys-qjs.patch \ diff --git a/gnu/packages/patches/qtwayland-5.15.18-0056-redraw-hidpi.patch b/gnu/packages/patches/qtwayland-5.15.18-0056-redraw-hidpi.patch new file mode 100644 index 0000000000..a18136a2e7 --- /dev/null +++ b/gnu/packages/patches/qtwayland-5.15.18-0056-redraw-hidpi.patch @@ -0,0 +1,35 @@ +From 30ed491e1ea190591260f1b73b9dad2a5926e113 Mon Sep 17 00:00:00 2001 +From: Danny Milosavljevic +Date: Mon, 16 Feb 2026 00:00:00 +0100 +Subject: [PATCH] Client: Force full repaint after output scale change +See: + +In handleScreensChanged(), after ensureSize(), call +requestUpdate() and sendExposeEvent() for the entire window. +This forces a full repaint at the new scale. +--- + src/client/qwaylandwindow.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 7c338d27a..a8d5fe2e4 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -1075,6 +1075,14 @@ void QWaylandWindow::handleScreensChanged() + if (mSurface && mDisplay->compositorVersion() >= 3) + mSurface->set_buffer_scale(mScale); + ensureSize(); ++ // The buffer was recreated at the new scale but no widgets ++ // are marked dirty, so it is uninitialized (black). Force a ++ // full repaint by requesting an update and sending an expose ++ // event for the entire window. ++ if (isExposed()) { ++ window()->requestUpdate(); ++ sendExposeEvent(QRect(QPoint(), geometry().size())); ++ } + } + } + +-- +GitLab + diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8f0e5d570a..03eaa2db29 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2290,7 +2290,8 @@ record media, and manage a collection of media content.") "qtwayland-5.15.18-0052-tests-fix-tst_xdgshell-minmaxsize.patch" "qtwayland-5.15.18-0053-client-remove-some-surface-commits.patch" "qtwayland-5.15.18-0054-client-avoid-locking-resizing-in-qwaylandshmbackings.patch" - "qtwayland-5.15.18-0055-bradient-use-qwaylandwindow-actual-window-title.patch")) + "qtwayland-5.15.18-0055-bradient-use-qwaylandwindow-actual-window-title.patch" + "qtwayland-5.15.18-0056-redraw-hidpi.patch")) (sha256 (base32 "07gqgd6ixqnsvc9r1c9y92vaxwj11ijrqvnxib8sv6xwhcmhvw43"))))