summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-10-30 19:28:17 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-10-30 19:28:17 +0000
commite923015b0139c3762ad514d703cf965664496660 (patch)
tree0dd0802d2c4cc359b94de45616b1fc896b672989 /src
parent2ca4600a7ef3750144c990be4612827f3d2277f5 (diff)
STR 2370: fixed static allocation in Fl_Tabs.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7777 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Tabs.cxx20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/Fl_Tabs.cxx b/src/Fl_Tabs.cxx
index 7aed07486..050c97e73 100644
--- a/src/Fl_Tabs.cxx
+++ b/src/Fl_Tabs.cxx
@@ -117,12 +117,20 @@ Fl_Widget *Fl_Tabs::which(int event_x, int event_y) {
if (event_y > y()+H || event_y < y()) return 0;
}
if (event_x < x()) return 0;
- int p[128], wp[128];
+ Fl_Widget *ret = 0L;
+ int nc = children();
+ int *p = (int*)malloc((nc+1)*sizeof(int));
+ int *wp = (int*)malloc((nc+1)*sizeof(int));
tab_positions(p, wp);
for (int i=0; i<children(); i++) {
- if (event_x < x()+p[i+1]) return child(i);
+ if (event_x < x()+p[i+1]) {
+ ret = child(i);
+ break;
+ }
}
- return 0;
+ free(p);
+ free(wp);
+ return ret;
}
void Fl_Tabs::redraw_tabs()
@@ -318,7 +326,9 @@ void Fl_Tabs::draw() {
if (v) update_child(*v);
}
if (damage() & (FL_DAMAGE_SCROLL|FL_DAMAGE_ALL)) {
- int p[128]; int wp[128];
+ int nc = children();
+ int *p = (int*)malloc((nc+1)*sizeof(int));
+ int *wp = (int*)malloc((nc+1)*sizeof(int));
int selected = tab_positions(p,wp);
int i;
Fl_Widget*const* a = array();
@@ -330,6 +340,8 @@ void Fl_Tabs::draw() {
i = selected;
draw_tab(x()+p[i], x()+p[i+1], wp[i], H, a[i], SELECTED);
}
+ free(p);
+ free(wp);
}
}