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

Reply via email to