]> source.dussan.org Git - tigervnc.git/commitdiff
Only announce clipboard for plain text data
authorSamuel Mannehed <samuel@cendio.se>
Tue, 1 Oct 2024 10:49:40 +0000 (12:49 +0200)
committerLinn Mattsson <linma@cendio.se>
Tue, 22 Oct 2024 10:41:34 +0000 (12:41 +0200)
FLTK has support for both image and plain text clipboard data, we don't.
This means we only send plain text clipboard from the viewer to the
server. Some applications can get confused when we announce that
clipboard is available and later don't send anything. An example of such
an application is QGIS, in the remote session it froze when an image was
copied on the client side.

This fix means we only call announceClipboard() when the clipboard
contains plain text. That means TigerVNC is now more robust and doesn't
trigger freezes in buggy applications.

(cherry picked from commit 8a80c906b9f7c08b1c664569a97d327d62c6d8ae)

vncviewer/Viewport.cxx

index be2cbc8f7986efdc9407b0023dc9ce521cda0e72..5ff38f68564d2b4a9d5e116b0b6592f3ea5d71b8 100644 (file)
@@ -754,6 +754,11 @@ void Viewport::handleClipboardChange(int source, void *data)
     return;
 #endif
 
+  if (!Fl::clipboard_contains(Fl::clipboard_plain_text)) {
+    vlog.debug("Got non-plain text in local clipboard, ignoring.");
+    return;
+  }
+
   self->clipboardSource = source;
 
   if (!self->hasFocus()) {