mirror of
https://github.com/fltk/fltk.git
synced 2026-06-06 00:22:42 +08:00
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
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
CHANGES IN FLTK 1.3.0
|
CHANGES IN FLTK 1.3.0
|
||||||
|
|
||||||
|
- Fixed static allocation in Fl_Tabs (STR #2370)
|
||||||
|
- Fixed Fl_Widget::measure_label() to const (STR #2406)
|
||||||
|
- Added step by step README's for MSWindows, OS X, and four
|
||||||
|
Linux distros
|
||||||
- Fixed unbalanced Windows OleInitialize/OleUnitialize calls
|
- Fixed unbalanced Windows OleInitialize/OleUnitialize calls
|
||||||
when loading/unloading the FLTK dll (STR #2417)
|
when loading/unloading the FLTK dll (STR #2417)
|
||||||
- Fixed X11/XDBE double buffering (STR #2152, #2197)
|
- Fixed X11/XDBE double buffering (STR #2152, #2197)
|
||||||
|
|||||||
+16
-4
@@ -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_y > y()+H || event_y < y()) return 0;
|
||||||
}
|
}
|
||||||
if (event_x < x()) 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);
|
tab_positions(p, wp);
|
||||||
for (int i=0; i<children(); i++) {
|
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()
|
void Fl_Tabs::redraw_tabs()
|
||||||
@@ -318,7 +326,9 @@ void Fl_Tabs::draw() {
|
|||||||
if (v) update_child(*v);
|
if (v) update_child(*v);
|
||||||
}
|
}
|
||||||
if (damage() & (FL_DAMAGE_SCROLL|FL_DAMAGE_ALL)) {
|
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 selected = tab_positions(p,wp);
|
||||||
int i;
|
int i;
|
||||||
Fl_Widget*const* a = array();
|
Fl_Widget*const* a = array();
|
||||||
@@ -330,6 +340,8 @@ void Fl_Tabs::draw() {
|
|||||||
i = selected;
|
i = selected;
|
||||||
draw_tab(x()+p[i], x()+p[i+1], wp[i], H, a[i], SELECTED);
|
draw_tab(x()+p[i], x()+p[i+1], wp[i], H, a[i], SELECTED);
|
||||||
}
|
}
|
||||||
|
free(p);
|
||||||
|
free(wp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user