mirror of
https://github.com/fergalmoran/flameshot.git
synced 2025-12-22 09:51:06 +00:00
Wayland kde clipboard (#2305)
* working on wayland clipboard * disabled wayland kde clipboard fix on snap until Kf5 tools are updated * enable wayland clibboard on fedora * drop fedora 34 and disable wayland clipboard on suse until it gets a new enough kf5
This commit is contained in:
9
.github/workflows/Linux-pack.yml
vendored
9
.github/workflows/Linux-pack.yml
vendored
@@ -303,13 +303,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
dist:
|
||||
- {
|
||||
name: fedora-34,
|
||||
os: fedora,
|
||||
symbol: 34,
|
||||
arch: x86_64
|
||||
}
|
||||
- {
|
||||
- {
|
||||
name: fedora-35,
|
||||
os: fedora,
|
||||
symbol: 35,
|
||||
@@ -484,6 +478,7 @@ jobs:
|
||||
fcitx-frontend-qt5 \
|
||||
openssl \
|
||||
ca-certificates
|
||||
|
||||
- name: Get go-appimage tool
|
||||
# Will not use linuxdeployqt anymore, because it suopprts currently still-supported mainstream distribution,
|
||||
# which is glibc 2.23. For more information, please see https://github.com/probonopd/linuxdeployqt/issues/340.
|
||||
|
||||
@@ -67,6 +67,7 @@ option(USE_MONOCHROME_ICON "Build using monochrome icon as default" OFF)
|
||||
option(GENERATE_TS "Regenerate translation source files" OFF)
|
||||
option(USE_EXTERNAL_SINGLEAPPLICATION "Use external QtSingleApplication library" OFF)
|
||||
option(USE_LAUNCHER_ABSOLUTE_PATH "Use absolute path for the desktop launcher" ON)
|
||||
option(USE_WAYLAND_CLIPBOARD "USE KF Gui Wayland Clipboard" OFF)
|
||||
|
||||
include(cmake/StandardProjectSettings.cmake)
|
||||
|
||||
@@ -108,6 +109,7 @@ option(BUILD_STATIC_LIBS ON)
|
||||
option(BUILD_SHARED_LIBS OFF)
|
||||
add_subdirectory(external/Qt-Color-Widgets EXCLUDE_FROM_ALL)
|
||||
|
||||
|
||||
if (APPLE)
|
||||
add_subdirectory(external/QHotkey)
|
||||
endif()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
app-id: org.flameshot.Flameshot
|
||||
runtime: org.kde.Platform
|
||||
runtime-version: '5.15'
|
||||
runtime-version: '5.15-21.08'
|
||||
sdk: org.kde.Sdk
|
||||
command: flameshot
|
||||
finish-args:
|
||||
@@ -26,8 +26,9 @@ modules:
|
||||
- name: flameshot
|
||||
buildsystem: cmake-ninja
|
||||
config-opts:
|
||||
- -DCMAKE_BUILD_TYPE=Release
|
||||
- -DCMAKE_BUILD_TYPE=Release
|
||||
- -DUSE_WAYLAND_CLIPBOARD=1
|
||||
sources:
|
||||
- type: git
|
||||
url: https://github.com/flameshot-org/flameshot.git
|
||||
branch: master
|
||||
branch: master
|
||||
|
||||
@@ -34,6 +34,9 @@ BuildRequires: ninja-build
|
||||
BuildRequires: desktop-file-utils
|
||||
|
||||
BuildRequires: cmake(Qt5Core) >= 5.9.0
|
||||
%if %{is_rhel_or_fedora}
|
||||
BuildRequires: cmake(KF5GuiAddons) >= 5.89.0
|
||||
%endif
|
||||
BuildRequires: cmake(Qt5DBus) >= 5.9.0
|
||||
BuildRequires: cmake(Qt5Gui) >= 5.9.0
|
||||
BuildRequires: cmake(Qt5LinguistTools) >= 5.9.0
|
||||
@@ -78,7 +81,10 @@ Features:
|
||||
%cmake -DCMAKE_BUILD_TYPE=Release
|
||||
%endif
|
||||
%if %{is_rhel_or_fedora}
|
||||
%cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
%cmake -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DUSE_WAYLAND_CLIPBOARD:BOOL=ON \
|
||||
%endif
|
||||
%cmake_build
|
||||
|
||||
|
||||
@@ -46,6 +46,9 @@ parts:
|
||||
- kde-frameworks-5-qt-5-15-core20
|
||||
source: https://github.com/flameshot-org/flameshot.git
|
||||
plugin: cmake
|
||||
# This cannot be enabled until the KF5 toolkit in the snap is updated
|
||||
#cmake-parameters:
|
||||
# - -DUSE_WAYLAND_CLIPBOARD=1
|
||||
source-type: git
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
|
||||
@@ -10,6 +10,10 @@ find_package(
|
||||
DBus
|
||||
LinguistTools)
|
||||
|
||||
if (USE_WAYLAND_CLIPBOARD)
|
||||
find_package(KF5GuiAddons)
|
||||
endif()
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
@@ -190,8 +194,14 @@ target_link_libraries(
|
||||
Qt5::Widgets
|
||||
${QTSINGLEAPPLICATION_LIBRARY}
|
||||
QtColorWidgets
|
||||
|
||||
)
|
||||
|
||||
if (USE_WAYLAND_CLIPBOARD)
|
||||
target_compile_definitions(flameshot PRIVATE USE_WAYLAND_CLIPBOARD=1)
|
||||
target_link_libraries(flameshot KF5::GuiAddons)
|
||||
endif()
|
||||
|
||||
if (APPLE)
|
||||
set(MACOSX_BUNDLE_IDENTIFIER "org.flameshot")
|
||||
set_target_properties(
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user