Author: manolo
Date: 2012-05-17 06:50:11 -0700 (Thu, 17 May 2012)
New Revision: 9514
Log:
Created function fltk3::Widget* fltk3::event_widget() with this Doxygen 
description:
 Widget to which mouse event coordinates relate.
 
 Functions fltk3::event_x() and fltk3::event_y() return values that are 
 offsets from the top-left of the widget returned by this function.
 Outside of event-handling contexts, this function returns NULL.

Modified:
   branches/branch-3.0/include/FL/Fl.H
   branches/branch-3.0/include/fltk3/Widget.h
   branches/branch-3.0/include/fltk3/run.h
   branches/branch-3.0/src/fltk3/Widget.cxx
   branches/branch-3.0/src/fltk3/run.cxx

Modified: branches/branch-3.0/include/FL/Fl.H
===================================================================
--- branches/branch-3.0/include/FL/Fl.H 2012-05-17 13:10:08 UTC (rev 9513)
+++ branches/branch-3.0/include/FL/Fl.H 2012-05-17 13:50:11 UTC (rev 9514)
@@ -301,13 +301,13 @@
   
   static int event_x() {
     int retval = fltk3::event_x();
-    if (fltk3::e_widget && !fltk3::e_widget->as_window()) retval += 
fltk3::e_widget->dx_window();
+    if (fltk3::event_widget() && !fltk3::event_widget()->as_window()) retval 
+= fltk3::event_widget()->dx_window();
     return retval;
   }
   
   static int event_y() {
     int retval = fltk3::event_y();
-    if (fltk3::e_widget && !fltk3::e_widget->as_window()) retval += 
fltk3::e_widget->dy_window();
+    if (fltk3::event_widget() && !fltk3::event_widget()->as_window()) retval 
+= fltk3::event_widget()->dy_window();
     return retval;
   }
   
@@ -392,9 +392,9 @@
   }
   
   static int event_inside(int x, int y, int w, int h) {
-    if (fltk3::e_widget && !fltk3::e_widget->as_window()) {
-      x -= fltk3::e_widget->dx_window();
-      y -= fltk3::e_widget->dy_window();
+    if (fltk3::event_widget() && !fltk3::event_widget()->as_window()) {
+      x -= fltk3::event_widget()->dx_window();
+      y -= fltk3::event_widget()->dy_window();
       }
     return fltk3::event_inside(x, y, w, h);
   }

Modified: branches/branch-3.0/include/fltk3/Widget.h
===================================================================
--- branches/branch-3.0/include/fltk3/Widget.h  2012-05-17 13:10:08 UTC (rev 
9513)
+++ branches/branch-3.0/include/fltk3/Widget.h  2012-05-17 13:50:11 UTC (rev 
9514)
@@ -326,6 +326,7 @@
    */
   class FLTK3_EXPORT Widget : public Label {
     friend class Group;
+    friend Widget* fltk3::event_widget();
     
     fltk3::Group* parent_;
     fltk3::Callback* callback_;
@@ -338,6 +339,7 @@
     uchar when_;
     
     const char *tooltip_;
+    static Widget* e_widget; //the Widget to which event coordinates relate or 
NULL
     
     /** unimplemented copy ctor */
     Widget(const Widget &);

Modified: branches/branch-3.0/include/fltk3/run.h
===================================================================
--- branches/branch-3.0/include/fltk3/run.h     2012-05-17 13:10:08 UTC (rev 
9513)
+++ branches/branch-3.0/include/fltk3/run.h     2012-05-17 13:50:11 UTC (rev 
9514)
@@ -145,7 +145,6 @@
   extern fltk3::Widget* belowmouse_;
   extern fltk3::Widget* pushed_;
   extern fltk3::Widget* focus_;
-  extern fltk3::Widget* e_widget;
   extern int damage_;
   extern fltk3::Widget* selection_owner_;
   extern fltk3::Window* modal_;
@@ -694,6 +693,8 @@
    you paste a nul character.
    */
   inline int event_length() {return e_length;}
+
+  Widget* event_widget();
   
   int compose(int &del);
   void compose_reset();

Modified: branches/branch-3.0/src/fltk3/Widget.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/Widget.cxx    2012-05-17 13:10:08 UTC (rev 
9513)
+++ branches/branch-3.0/src/fltk3/Widget.cxx    2012-05-17 13:50:11 UTC (rev 
9514)
@@ -45,6 +45,7 @@
 
 static fltk3::Widget *obj_queue[QUEUE_SIZE];
 static int obj_head, obj_tail;
+fltk3::Widget* fltk3::Widget::e_widget = NULL;
 
 void fltk3::Widget::default_callback(fltk3::Widget *o, void * /*v*/) {
 #if 0
@@ -514,9 +515,9 @@
 
   int old_event = fltk3::e_number; fltk3::e_number = event;
   // the widget to which fltk3::event_x() and event_y() coordinates are 
relative
-  fltk3::e_widget = this; 
+  e_widget = this; 
   int ret = handle(fltk3::e_number);
-  fltk3::e_widget = NULL; // set to NULL outside of handle()
+  e_widget = NULL; // set to NULL outside of handle()
 
   fltk3::e_number = old_event;
   fltk3::e_y = save_y;

Modified: branches/branch-3.0/src/fltk3/run.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/run.cxx       2012-05-17 13:10:08 UTC (rev 
9513)
+++ branches/branch-3.0/src/fltk3/run.cxx       2012-05-17 13:50:11 UTC (rev 
9514)
@@ -96,7 +96,6 @@
 fltk3::Widget  *fltk3::belowmouse_,
                *fltk3::pushed_,
                *fltk3::focus_,
-               *fltk3::e_widget,
                *fltk3::selection_owner_;
 int            fltk3::damage_,
                fltk3::e_number,
@@ -220,6 +219,7 @@
   // and e_x, e_y are relative to e_widget.
   int dx = e_x, dy = e_y;
   Group* g = o->parent();
+  Widget* e_widget = event_widget();
   if (e_widget && !e_widget->as_window()) {
     dx += e_widget->dx_window();
     dy += e_widget->dy_window();
@@ -2015,6 +2015,14 @@
   fltk3::release_widget_pointer(wp_); // remove pointer from watch list
 }
 
+/** Widget to which mouse event coordinates relate.
+ 
+ Functions fltk3::event_x() and fltk3::event_y() return values that are 
+ offsets from the top-left of the widget returned by this function.
+ Outside of event-handling contexts, this function returns NULL.
+ */
+fltk3::Widget* fltk3::event_widget() {return fltk3::Widget::e_widget;}
+
 //
 // End of "$Id$".
 //

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to