123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- diff -up fltk-1.3.x-r8659/FL/Fl.H.orig fltk-1.3.x-r8659/FL/Fl.H
- --- fltk-1.3.x-r8659/FL/Fl.H.orig 2011-05-17 16:25:56.671744548 +0200
- +++ fltk-1.3.x-r8659/FL/Fl.H 2011-05-17 16:26:05.709101536 +0200
- @@ -108,6 +108,9 @@ typedef int (*Fl_Args_Handler)(int argc,
- \see Fl::event_dispatch(Fl_Event_Dispatch) */
- typedef int (*Fl_Event_Dispatch)(int event, Fl_Window *w);
-
- +/** Signature of add_clipboard_notify functions passed as parameters */
- +typedef void (*Fl_Clipboard_Notify_Handler)(int source, void *data);
- +
- /** @} */ /* group callback_functions */
-
-
- @@ -744,6 +747,19 @@ public:
- */
- static void paste(Fl_Widget &receiver, int source /*=0*/); // platform dependent
- /**
- + FLTK will call the registered callback whenever there is a change to the
- + selection buffer or the clipboard. The source argument indicates which
- + of the two has changed. Only changes by other applications are reported.
- + \note Some systems require polling to monitor the clipboard and may
- + therefore have some delay in detecting changes.
- + */
- + static void add_clipboard_notify(Fl_Clipboard_Notify_Handler h, void *data);
- + /**
- + Stop calling the specified callback when there are changes to the selection
- + buffer or the clipboard.
- + */
- + static void remove_clipboard_notify(Fl_Clipboard_Notify_Handler h);
- + /**
- Initiate a Drag And Drop operation. The selection buffer should be
- filled with relevant data before calling this method. FLTK will
- then initiate the system wide drag and drop handling. Dropped data
- diff -up fltk-1.3.x-r8659/src/Fl.cxx.orig fltk-1.3.x-r8659/src/Fl.cxx
- --- fltk-1.3.x-r8659/src/Fl.cxx.orig 2011-05-18 15:20:26.667291459 +0200
- +++ fltk-1.3.x-r8659/src/Fl.cxx 2011-05-18 16:31:15.522026086 +0200
- @@ -430,6 +430,69 @@ static char in_idle;
- #endif
-
- ////////////////////////////////////////////////////////////////
- +// Clipboard notifications
- +
- +struct Clipboard_Notify {
- + Fl_Clipboard_Notify_Handler handler;
- + void *data;
- + struct Clipboard_Notify *next;
- +};
- +
- +static struct Clipboard_Notify *clip_notify_list = NULL;
- +
- +extern void fl_clipboard_notify_change(); // in Fl_<platform>.cxx
- +
- +void Fl::add_clipboard_notify(Fl_Clipboard_Notify_Handler h, void *data) {
- + struct Clipboard_Notify *node;
- +
- + remove_clipboard_notify(h);
- +
- + node = new Clipboard_Notify;
- +
- + node->handler = h;
- + node->data = data;
- + node->next = clip_notify_list;
- +
- + clip_notify_list = node;
- +
- + fl_clipboard_notify_change();
- +}
- +
- +void Fl::remove_clipboard_notify(Fl_Clipboard_Notify_Handler h) {
- + struct Clipboard_Notify *node, **prev;
- +
- + node = clip_notify_list;
- + prev = &clip_notify_list;
- + while (node != NULL) {
- + if (node->handler == h) {
- + *prev = node->next;
- + delete node;
- +
- + fl_clipboard_notify_change();
- +
- + return;
- + }
- +
- + prev = &node->next;
- + node = node->next;
- + }
- +}
- +
- +bool fl_clipboard_notify_empty(void) {
- + return clip_notify_list == NULL;
- +}
- +
- +void fl_trigger_clipboard_notify(int source) {
- + struct Clipboard_Notify *node;
- +
- + node = clip_notify_list;
- + while (node != NULL) {
- + node->handler(source, node->data);
- + node = node->next;
- + }
- +}
- +
- +////////////////////////////////////////////////////////////////
- // wait/run/check/ready:
-
- void (*Fl::idle)(); // see Fl::add_idle.cxx for the add/remove functions
|