|
@@ -9,6 +9,11 @@
|
|
|
#include "src/utils/filenamehandler.h"
|
|
|
#include "src/utils/globalvalues.h"
|
|
|
#include "utils/desktopinfo.h"
|
|
|
+
|
|
|
+#if USE_WAYLAND_CLIPBOARD
|
|
|
+#include <KSystemClipboard>
|
|
|
+#endif
|
|
|
+
|
|
|
#include <QApplication>
|
|
|
#include <QBuffer>
|
|
|
#include <QClipboard>
|
|
@@ -33,15 +38,26 @@ void ScreenshotSaver::saveToClipboardMime(const QPixmap& capture,
|
|
|
QImageWriter imageWriter{ &buffer, imageType.toUpper().toUtf8() };
|
|
|
imageWriter.write(capture.toImage());
|
|
|
|
|
|
- QPixmap pngPixmap;
|
|
|
+ QPixmap formattedPixmap;
|
|
|
bool isLoaded =
|
|
|
- pngPixmap.loadFromData(reinterpret_cast<uchar*>(array.data()),
|
|
|
- array.size(),
|
|
|
- imageType.toUpper().toUtf8());
|
|
|
+ formattedPixmap.loadFromData(reinterpret_cast<uchar*>(array.data()),
|
|
|
+ array.size(),
|
|
|
+ imageType.toUpper().toUtf8());
|
|
|
if (isLoaded) {
|
|
|
- QMimeData* mimeData = new QMimeData;
|
|
|
+
|
|
|
+ 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);
|
|
|
+#else
|
|
|
mimeData->setData("image/" + imageType, array);
|
|
|
QApplication::clipboard()->setMimeData(mimeData);
|
|
|
+#endif
|
|
|
+
|
|
|
} else {
|
|
|
AbstractLogger::error()
|
|
|
<< QObject::tr("Error while saving to clipboard");
|