From 9120de366363801b70aef604fd9024977772a6cf Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 5 Nov 2020 08:37:48 +0100 Subject: [PATCH] Rebase patch to Plasma 5.20 --- ...refresh-x11-clipboard-while-fetching.patch | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/kwin-do-not-refresh-x11-clipboard-while-fetching.patch b/kwin-do-not-refresh-x11-clipboard-while-fetching.patch index 1cb18bb..f0c955f 100644 --- a/kwin-do-not-refresh-x11-clipboard-while-fetching.patch +++ b/kwin-do-not-refresh-x11-clipboard-while-fetching.patch @@ -18,22 +18,22 @@ CCBUG: 412350 2 files changed, 11 insertions(+) diff --git a/xwl/clipboard.cpp b/xwl/clipboard.cpp -index b2f3435a5..a64fda0ae 100644 +index 37a5c3b..87ee5cd 100644 --- a/xwl/clipboard.cpp +++ b/xwl/clipboard.cpp @@ -66,6 +66,10 @@ Clipboard::Clipboard(xcb_atom_t atom, QObject *parent) - + void Clipboard::wlSelectionChanged(KWaylandServer::AbstractDataSource *dsi) { + if (m_waitingForTargets) { + return; + } + - if (!ownsSelection(dsi)) { + if (dsi && !ownsSelection(dsi)) { // Wayland native client provides new selection if (!m_checkConnection) { -@@ -85,6 +89,10 @@ bool Clipboard::ownsSelection(KWaylandServer::AbstractDataSource *dsi) const - +@@ -88,6 +92,10 @@ bool Clipboard::ownsSelection(KWaylandServer::AbstractDataSource *dsi) const + void Clipboard::checkWlSource() { + if (m_waitingForTargets) { @@ -43,33 +43,32 @@ index b2f3435a5..a64fda0ae 100644 auto dsi = waylandServer()->seat()->selection(); auto removeSource = [this] { if (wlSource()) { -@@ -142,6 +150,7 @@ void Clipboard::doHandleXfixesNotify(xcb_xfixes_selection_notify_event_t *event) - +@@ -145,11 +153,13 @@ void Clipboard::doHandleXfixesNotify(xcb_xfixes_selection_notify_event_t *event) + if (X11Source *source = x11Source()) { source->getTargets(); + m_waitingForTargets = true; - } else { - qCWarning(KWIN_XWL) << "Could not create a source from" << event << Qt::hex << (event ? event->owner : -1); } -@@ -149,6 +158,7 @@ void Clipboard::doHandleXfixesNotify(xcb_xfixes_selection_notify_event_t *event) - + } + void Clipboard::x11OffersChanged(const QStringList &added, const QStringList &removed) { + m_waitingForTargets = false; X11Source *source = x11Source(); if (!source) { - qCWarning(KWIN_XWL) << "offers changed when not having an X11Source!?"; + return; diff --git a/xwl/clipboard.h b/xwl/clipboard.h -index c2296845a..f534d1f3e 100644 +index c229684..f534d1f 100644 --- a/xwl/clipboard.h +++ b/xwl/clipboard.h @@ -53,6 +53,7 @@ private: QMetaObject::Connection m_checkConnection; - + Q_DISABLE_COPY(Clipboard) + bool m_waitingForTargets = false; }; - + } // namespace Xwl + -- GitLab