]> source.dussan.org Git - tigervnc.git/commitdiff
Only announce clipboard for plain text data 1840/head
authorSamuel Mannehed <samuel@cendio.se>
Tue, 1 Oct 2024 10:49:40 +0000 (12:49 +0200)
committerSamuel Mannehed <samuel@cendio.se>
Tue, 1 Oct 2024 10:49:40 +0000 (12:49 +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.

vncviewer/Viewport.cxx

index ad7a6e8de8a478265079ffafc8d79910b253b139..fb6d43229eb0e4da57f3f600597d345edd748b97 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()) {