Author: manolo
Date: 2012-05-17 01:40:21 -0700 (Thu, 17 May 2012)
New Revision: 9511
Log:
Fixed fltk3::event_inside(Rectangle*) (cont'd).
Modified:
branches/branch-3.0/src/fltk3/Widget.cxx
branches/branch-3.0/src/fltk3/run.cxx
Modified: branches/branch-3.0/src/fltk3/Widget.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Widget.cxx 2012-05-16 23:19:37 UTC (rev
9510)
+++ branches/branch-3.0/src/fltk3/Widget.cxx 2012-05-17 08:40:21 UTC (rev
9511)
@@ -516,7 +516,8 @@
// the widget to which fltk3::event_x() and event_y() coordinates are
relative
fltk3::e_widget = this;
int ret = handle(fltk3::e_number);
-
+ fltk3::e_widget = NULL; // set to NULL outside of handle()
+
fltk3::e_number = old_event;
fltk3::e_y = save_y;
fltk3::e_x = save_x;
Modified: branches/branch-3.0/src/fltk3/run.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/run.cxx 2012-05-16 23:19:37 UTC (rev
9510)
+++ branches/branch-3.0/src/fltk3/run.cxx 2012-05-17 08:40:21 UTC (rev
9511)
@@ -218,12 +218,17 @@
int fltk3::event_inside(const fltk3::Rectangle *r) {
// here r is relative to its enclosing group,
// and e_x, e_y are relative to e_widget.
- int dxr=0, dyr=0;
- if (((fltk3::Widget*)r)->as_window()) dxr = ((fltk3::Widget*)r)->dx_window();
- if (((fltk3::Widget*)r)->as_window()) dyr = ((fltk3::Widget*)r)->dy_window();
- return ((Rectangle*)r)->contains(
- e_x +
(e_widget->as_window()?0:e_widget->dx_window()) - dxr,
- e_y +
(e_widget->as_window()?0:e_widget->dy_window()) - dyr);
+ int dxr = e_x, dyr = e_y;
+ Group* g = ((Widget*)r)->parent();
+ if (e_widget && !e_widget->as_window()) {
+ dxr += e_widget->dx_window();
+ dyr += e_widget->dy_window();
+ }
+ if (g && !g->as_window()) {
+ dxr -= g->dx_window();
+ dyr -= g->dy_window();
+ }
+ return ((Rectangle*)r)->contains(dxr, dyr);
}
//
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit