From 16046bf4ddb21381968b7333318e58b6438c89ac Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Mon, 8 Jul 2002 15:14:38 +0000 Subject: Add Fl::remove_handler() method. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2491 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 1 + FL/Fl.H | 5 +++-- documentation/Fl.html | 7 +++++++ src/Fl.cxx | 20 ++++++++++++++++++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 932256669..74955ba75 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ CHANGES IN FLTK 1.1.0 - Config header file changes for Borland C++. + - FLTK didn't provide a Fl::remove_handler() method. CHANGES IN FLTK 1.1.0rc4 diff --git a/FL/Fl.H b/FL/Fl.H index dfbf51eee..464c72471 100644 --- a/FL/Fl.H +++ b/FL/Fl.H @@ -1,5 +1,5 @@ // -// "$Id: Fl.H,v 1.8.2.11.2.15 2002/04/13 22:17:45 easysw Exp $" +// "$Id: Fl.H,v 1.8.2.11.2.16 2002/07/08 15:14:37 easysw Exp $" // // Main header file for the Fast Light Tool Kit (FLTK). // @@ -168,6 +168,7 @@ public: static FL_EXPORT Fl_Widget* focus() {return focus_;} static FL_EXPORT void focus(Fl_Widget*); static FL_EXPORT void add_handler(int (*h)(int)); + static FL_EXPORT void remove_handler(int (*h)(int)); // cut/paste: static FL_EXPORT void copy(const char* stuff, int len, int clipboard = 0); @@ -252,5 +253,5 @@ public: #endif // !Fl_H // -// End of "$Id: Fl.H,v 1.8.2.11.2.15 2002/04/13 22:17:45 easysw Exp $". +// End of "$Id: Fl.H,v 1.8.2.11.2.16 2002/07/08 15:14:37 easysw Exp $". // diff --git a/documentation/Fl.html b/documentation/Fl.html index eb804cb1c..e240c5f06 100644 --- a/documentation/Fl.html +++ b/documentation/Fl.html @@ -106,6 +106,7 @@ state information and global methods for the current application.

  • release
  • remove_check
  • remove_fd
  • +
  • remove_handler
  • remove_idle
  • remove_timeout
  • repeat_timeout
  • @@ -927,6 +928,12 @@ callback that no longer exists.

    void remove_fd(int, int when);
    void remove_fd(int);

    +

    Removes a file descriptor handler. + +

    void remove_handler(int (*h)(int));

    + +

    Removes a previously added event handler. +

    void remove_idle(void (*cb)(void*), void* = 0);

    Removes the specified idle callback, if it is installed. diff --git a/src/Fl.cxx b/src/Fl.cxx index 16690b930..ccffdda02 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl.cxx,v 1.24.2.41.2.39 2002/06/27 20:52:44 easysw Exp $" +// "$Id: Fl.cxx,v 1.24.2.41.2.40 2002/07/08 15:14:38 easysw Exp $" // // Main event handling code for the Fast Light Tool Kit (FLTK). // @@ -391,6 +391,22 @@ void Fl::add_handler(int (*h)(int)) { handlers = l; } +void Fl::remove_handler(int (*h)(int)) { + handler_link *l, *p; + + // Search for the handler in the list... + for (l = handlers, p = 0; l && l->handle != h; p = l; l = l->next); + + if (l) { + // Found it, so remove it from the list... + if (p) p->next = l->next; + else handlers = l->next; + + // And free the record... + delete l; + } +} + int (*fl_local_grab)(int); // used by fl_dnd.cxx static int send_handlers(int event) { @@ -933,5 +949,5 @@ void Fl_Window::flush() { } // -// End of "$Id: Fl.cxx,v 1.24.2.41.2.39 2002/06/27 20:52:44 easysw Exp $". +// End of "$Id: Fl.cxx,v 1.24.2.41.2.40 2002/07/08 15:14:38 easysw Exp $". // -- cgit v1.2.3