From c2cae0301bb850235f9b6efed86e5c4d33a8842b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benigno=20Batista=20J=C3=BAnior?= <54124996+benignobjunior@users.noreply.github.com> Date: Sat, 21 Feb 2026 10:29:17 -0300 Subject: [PATCH] fix: use runtime detection for Wayland clipboard (#4497) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When compiled with USE_WAYLAND_CLIPBOARD, the clipboard now works correctly on both Wayland and X11 sessions. Previously, builds with USE_WAYLAND_CLIPBOARD=ON would always use KSystemClipboard, which doesn't work properly when running under X11 (e.g., via XWayland or QT_QPA_PLATFORM=xcb). This change adds a runtime check for the platform name: - 'wayland' -> uses KSystemClipboard (KF6 GuiAddons) - otherwise -> uses QApplication::clipboard() (standard Qt) This allows distros to ship a single binary that works on both display servers without requiring separate builds. Co-authored-by: Benigno Batista JĂșnior --- src/utils/screenshotsaver.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/utils/screenshotsaver.cpp b/src/utils/screenshotsaver.cpp index 965e5378e0..14715228dd 100644 --- a/src/utils/screenshotsaver.cpp +++ b/src/utils/screenshotsaver.cpp @@ -171,11 +171,16 @@ void saveToClipboardMime(const QPixmap& capture, const QString& imageType) auto* mimeData = new QMimeData(); #ifdef USE_WAYLAND_CLIPBOARD - mimeData->setImageData(formattedPixmap.toImage()); - mimeData->setData(QStringLiteral("x-kde-force-image-copy"), - QByteArray()); - KSystemClipboard::instance()->setMimeData(mimeData, - QClipboard::Clipboard); + if (QGuiApplication::platformName() == "wayland") { + mimeData->setImageData(formattedPixmap.toImage()); + mimeData->setData(QStringLiteral("x-kde-force-image-copy"), + QByteArray()); + KSystemClipboard::instance()->setMimeData(mimeData, + QClipboard::Clipboard); + } else { + mimeData->setData("image/" + imageType, array); + QApplication::clipboard()->setMimeData(mimeData); + } #else mimeData->setData("image/" + imageType, array); QApplication::clipboard()->setMimeData(mimeData);