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)
}
+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)
// 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);
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",
// 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);