]> source.dussan.org Git - tigervnc.git/commitdiff
Move server cut text handler to Viewport
authorPierre Ossman <ossman@cendio.se>
Mon, 26 Mar 2018 11:32:49 +0000 (13:32 +0200)
committerPierre Ossman <ossman@cendio.se>
Mon, 26 Mar 2018 11:32:49 +0000 (13:32 +0200)
That way both incoming and outgoing clipboard are both in the same
place, making things clearer.

vncviewer/CConn.cxx
vncviewer/DesktopWindow.cxx
vncviewer/DesktopWindow.h
vncviewer/Viewport.cxx
vncviewer/Viewport.h

index d95c6ab7b52685cfdb257a1617f2808903c693fb..35d6e231d3d56b3ad7824124886648d9db27886b 100644 (file)
@@ -423,32 +423,7 @@ void CConn::bell()
 
 void CConn::serverCutText(const char* str, rdr::U32 len)
 {
-  char *buffer;
-  int size, ret;
-
-  if (!acceptClipboard)
-    return;
-
-  size = fl_utf8froma(NULL, 0, str, len);
-  if (size <= 0)
-    return;
-
-  size++;
-
-  buffer = new char[size];
-
-  ret = fl_utf8froma(buffer, size, str, len);
-  assert(ret < size);
-
-  vlog.debug("Got clipboard data (%d bytes)", (int)strlen(buffer));
-
-  // RFB doesn't have separate selection and clipboard concepts, so we
-  // dump the data into both variants.
-  if (setPrimary)
-    Fl::copy(buffer, ret, 0);
-  Fl::copy(buffer, ret, 1);
-
-  delete [] buffer;
+  desktop->serverCutText(str, len);
 }
 
 void CConn::dataRect(const Rect& r, int encoding)
index 306803f95c9ca5755b1a880fe324686f40f2edd7..c450ea93d7a06ea71be744da64cd0f60e8ac0c92 100644 (file)
@@ -276,6 +276,12 @@ void DesktopWindow::resizeFramebuffer(int new_w, int new_h)
 }
 
 
+void DesktopWindow::serverCutText(const char* str, rdr::U32 len)
+{
+  viewport->serverCutText(str, len);
+}
+
+
 void DesktopWindow::setCursor(int width, int height,
                               const rfb::Point& hotspot,
                               const rdr::U8* data)
index ce589385e1772825bfa558afcb6e03d3a78edbee..6ec8e1bd3823b3fdad19007788cc3b4d5de386d7 100644 (file)
@@ -62,6 +62,9 @@ public:
   // Resize the current framebuffer, but retain the contents
   void resizeFramebuffer(int new_w, int new_h);
 
+  // Incoming clipboard from server
+  void serverCutText(const char* str, rdr::U32 len);
+
   // New image for the locally rendered cursor
   void setCursor(int width, int height, const rfb::Point& hotspot,
                  const rdr::U8* data);
index 1c0503c529f559d85484dcbdd9f8ded4a7002adf..851405cd4d105a195c8762402884fc967e701fc4 100644 (file)
@@ -228,6 +228,36 @@ void Viewport::updateWindow()
   damage(FL_DAMAGE_USER1, r.tl.x + x(), r.tl.y + y(), r.width(), r.height());
 }
 
+void Viewport::serverCutText(const char* str, rdr::U32 len)
+{
+  char *buffer;
+  int size, ret;
+
+  if (!acceptClipboard)
+    return;
+
+  size = fl_utf8froma(NULL, 0, str, len);
+  if (size <= 0)
+    return;
+
+  size++;
+
+  buffer = new char[size];
+
+  ret = fl_utf8froma(buffer, size, str, len);
+  assert(ret < size);
+
+  vlog.debug("Got clipboard data (%d bytes)", (int)strlen(buffer));
+
+  // RFB doesn't have separate selection and clipboard concepts, so we
+  // dump the data into both variants.
+  if (setPrimary)
+    Fl::copy(buffer, ret, 0);
+  Fl::copy(buffer, ret, 1);
+
+  delete [] buffer;
+}
+
 static const char * dotcursor_xpm[] = {
   "5 5 2 1",
   ".   c #000000",
index 3895fc7ff81361e0bd133f4f14283ebdf24eefbd..7acf3487d75f00d91fcc7e6e0fe5ea2978056c64 100644 (file)
@@ -43,6 +43,9 @@ public:
   // Flush updates to screen
   void updateWindow();
 
+  // Incoming clipboard from server
+  void serverCutText(const char* str, rdr::U32 len);
+
   // New image for the locally rendered cursor
   void setCursor(int width, int height, const rfb::Point& hotspot,
                  const rdr::U8* data);