summaryrefslogtreecommitdiff
path: root/src/Fl_Menu_add.cxx
diff options
context:
space:
mode:
authorBill Spitzak <spitzak@gmail.com>2000-01-16 04:30:39 +0000
committerBill Spitzak <spitzak@gmail.com>2000-01-16 04:30:39 +0000
commit685d58c4979f7c6a307b191321307e32130ed959 (patch)
tree44a5dc6aca30569b4b6dbba93ff72fdec414a155 /src/Fl_Menu_add.cxx
parentb45efe96dc8138f2a3cba84d4b5416472f34091e (diff)
Buttons on scrollbars draw pushed in (fix from barrero@irit.fr)
Fl_Menu_::remove(int i) will remove an entire submenu if i is the index of the menu title. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@985 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Menu_add.cxx')
-rw-r--r--src/Fl_Menu_add.cxx15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/Fl_Menu_add.cxx b/src/Fl_Menu_add.cxx
index fe1647f78..82bc5df4b 100644
--- a/src/Fl_Menu_add.cxx
+++ b/src/Fl_Menu_add.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_add.cxx,v 1.9.2.4 1999/07/12 12:22:45 carl Exp $"
+// "$Id: Fl_Menu_add.cxx,v 1.9.2.5 2000/01/16 04:30:37 bill Exp $"
//
// Menu utilities for the Fast Light Tool Kit (FLTK).
//
@@ -225,10 +225,17 @@ void Fl_Menu_::remove(int i) {
int n = size();
if (i<0 || i>=n) return;
if (!alloc) copy(menu_);
- if (alloc > 1) free((void *)menu_[i].text);
- memmove(&menu_[i],&menu_[i+1],(n-i)*sizeof(Fl_Menu_Item));
+ // find the next item, skipping submenus:
+ Fl_Menu_Item* item = menu_+i;
+ const Fl_Menu_Item* next_item = item->next();
+ // delete the text only if all items were created with add():
+ if (alloc > 1) {
+ for (Fl_Menu_Item* m = item; m < next_item; m++)
+ if (m->text) free((void*)(m->text));
+ }
+ memmove(item, next_item, ((menu_+n+1)-next_item)*sizeof(Fl_Menu_Item));
}
//
-// End of "$Id: Fl_Menu_add.cxx,v 1.9.2.4 1999/07/12 12:22:45 carl Exp $".
+// End of "$Id: Fl_Menu_add.cxx,v 1.9.2.5 2000/01/16 04:30:37 bill Exp $".
//