Skip to content

Commit c2cae03

Browse files
fix: use runtime detection for Wayland clipboard (flameshot-org#4497)
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 <benigno@opus-software.com.br>
1 parent 3ef8f09 commit c2cae03

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/utils/screenshotsaver.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,16 @@ void saveToClipboardMime(const QPixmap& capture, const QString& imageType)
171171
auto* mimeData = new QMimeData();
172172

173173
#ifdef USE_WAYLAND_CLIPBOARD
174-
mimeData->setImageData(formattedPixmap.toImage());
175-
mimeData->setData(QStringLiteral("x-kde-force-image-copy"),
176-
QByteArray());
177-
KSystemClipboard::instance()->setMimeData(mimeData,
178-
QClipboard::Clipboard);
174+
if (QGuiApplication::platformName() == "wayland") {
175+
mimeData->setImageData(formattedPixmap.toImage());
176+
mimeData->setData(QStringLiteral("x-kde-force-image-copy"),
177+
QByteArray());
178+
KSystemClipboard::instance()->setMimeData(mimeData,
179+
QClipboard::Clipboard);
180+
} else {
181+
mimeData->setData("image/" + imageType, array);
182+
QApplication::clipboard()->setMimeData(mimeData);
183+
}
179184
#else
180185
mimeData->setData("image/" + imageType, array);
181186
QApplication::clipboard()->setMimeData(mimeData);

0 commit comments

Comments
 (0)