summaryrefslogtreecommitdiffstats
path: root/source/kde/kde/patch/kguiaddons/a30c1fd2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kde/patch/kguiaddons/a30c1fd2.patch')
-rw-r--r--source/kde/kde/patch/kguiaddons/a30c1fd2.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/source/kde/kde/patch/kguiaddons/a30c1fd2.patch b/source/kde/kde/patch/kguiaddons/a30c1fd2.patch
new file mode 100644
index 000000000..9617b39ee
--- /dev/null
+++ b/source/kde/kde/patch/kguiaddons/a30c1fd2.patch
@@ -0,0 +1,48 @@
+From a30c1fd20870c425e586cec3d46d7eb944509b89 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Mon, 17 Oct 2022 16:56:57 +0100
+Subject: [PATCH] systemclipboard: Don't signals data source cancellation
+
+Right now we emit "selectionChanged" when either:
+ - we get an external new selection
+ - our own selection gets cancelled
+
+Semantically that's correct, if our own selection gets cancelled there's
+no data in the clipboard, globally it's changed.
+
+Pragmatically, we don't need to know about the latter event. It's not
+useful information for userspace code - and worst means we process
+events twice if clipboard is transferred from klipper to a client.
+
+This fixes a major issue with klipper when a user disables middle click
+paste. The compositor sends a cancel event on new clipboards, klipper
+detects the clipboard is empty and populates it.
+
+BUG: 460248
+---
+ src/systemclipboard/waylandclipboard.cpp | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/systemclipboard/waylandclipboard.cpp b/src/systemclipboard/waylandclipboard.cpp
+index c2fbdd6..af74902 100644
+--- a/src/systemclipboard/waylandclipboard.cpp
++++ b/src/systemclipboard/waylandclipboard.cpp
+@@ -456,7 +456,6 @@ void DataControlDevice::setSelection(std::unique_ptr<DataControlSource> selectio
+ m_selection = std::move(selection);
+ connect(m_selection.get(), &DataControlSource::cancelled, this, [this]() {
+ m_selection.reset();
+- Q_EMIT selectionChanged();
+ });
+ set_selection(m_selection->object());
+ Q_EMIT selectionChanged();
+@@ -467,7 +466,6 @@ void DataControlDevice::setPrimarySelection(std::unique_ptr<DataControlSource> s
+ m_primarySelection = std::move(selection);
+ connect(m_primarySelection.get(), &DataControlSource::cancelled, this, [this]() {
+ m_primarySelection.reset();
+- Q_EMIT primarySelectionChanged();
+ });
+
+ if (zwlr_data_control_device_v1_get_version(object()) >= ZWLR_DATA_CONTROL_DEVICE_V1_SET_PRIMARY_SELECTION_SINCE_VERSION) {
+--
+GitLab
+