summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLauri Kasanen <cand@gmx.com>2015-05-18 09:10:06 +0000
committerLauri Kasanen <cand@gmx.com>2015-05-18 09:10:06 +0000
commit03f69c0dd5244c50e430b430ee3a2e952b5a00fe (patch)
treeb1091de7479eb2cfc9bdf1b0ff9cb2089511f722 /src
parentf28b89f1d04922aa1fc5c90f6623fbd2b0400f8c (diff)
Add support for Fl::copy(..clipboard = 2..)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10731 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_cocoa.mm3
-rw-r--r--src/Fl_win32.cxx2
-rw-r--r--src/Fl_x.cxx7
3 files changed, 12 insertions, 0 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index a06111ffb..381c35172 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -3457,6 +3457,9 @@ static void resize_selection_buffer(int len, int clipboard) {
*/
void Fl::copy(const char *stuff, int len, int clipboard, const char *type) {
if (!stuff || len<0) return;
+ if (clipboard >= 2)
+ clipboard = 1; // Only on X11 do multiple clipboards make sense.
+
resize_selection_buffer(len+1, clipboard);
memcpy(fl_selection_buffer[clipboard], stuff, len);
fl_selection_buffer[clipboard][len] = 0; // needed for direct paste
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 830a6c81d..624de69d9 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -664,6 +664,8 @@ void fl_update_clipboard(void) {
// call this when you create a selection:
void Fl::copy(const char *stuff, int len, int clipboard, const char *type) {
if (!stuff || len<0) return;
+ if (clipboard >= 2)
+ clipboard = 1; // Only on X11 do multiple clipboards make sense.
// Convert \n -> \r\n (for old apps like Notepad, DOS)
Lf2CrlfConvert buf(stuff, len);
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index 9dee09514..094f271a5 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -994,6 +994,13 @@ static int get_xwinprop(Window wnd, Atom prop, long max_length,
void Fl::copy(const char *stuff, int len, int clipboard, const char *type) {
if (!stuff || len<0) return;
+
+ if (clipboard >= 2) {
+ copy(stuff, len, 0, type);
+ copy(stuff, len, 1, type);
+ return;
+ }
+
if (len+1 > fl_selection_buffer_length[clipboard]) {
delete[] fl_selection_buffer[clipboard];
fl_selection_buffer[clipboard] = new char[len+100];