diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2007-11-19 15:46:03 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2007-11-19 15:46:03 +0000 |
| commit | 2217ab964b4e3d9a80c331cf604a3c30caf2528d (patch) | |
| tree | 6b953fdcf091bb946cc9506071b0f6750de091e6 | |
| parent | faf6126897ad5060ad7187dbfe5ce9f7bd066f36 (diff) | |
STR #1767: Adding "remove" function for the Fl_Check_Browser
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5978 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | src/Fl_Check_Browser.cxx | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Fl_Check_Browser.cxx b/src/Fl_Check_Browser.cxx index aada7b4f9..799d09cbb 100644 --- a/src/Fl_Check_Browser.cxx +++ b/src/Fl_Check_Browser.cxx @@ -193,6 +193,40 @@ int Fl_Check_Browser::add(char *s, int b) { return (nitems_); } +int Fl_Check_Browser::remove(int item) { + cb_item *p = find_item(item); + cb_item *prev; + cb_item *next; + + // line at item exists + if(p) { + // tell the Browser_ what we will do + deleting(p); + + // fix checked count + if(p->checked) + --nchecked_; + + // remove the node + if (p->prev) + p->prev->next = p->next; + else + first = p->next; + if (p->next) + p->next->prev = p->prev; + else + last = p->prev; + + free(p->text); + free(p); + + --nitems_; + cached_item = -1; + } + + return (nitems_); +} + void Fl_Check_Browser::clear() { cb_item *p = first; cb_item *next; |
