Cool. Thanks!


[email protected] schrieb:

>Author: manolo
>Date: 2012-05-16 10:05:46 -0700 (Wed, 16 May 2012)
>New Revision: 9503
>Log:
>Fixed FLTK1 compatibility of Fl::event_x() and event_y().
>The need for a fix was apparent with the mandelbrot demo program: click
>and drag
>created a shifted rectangle.
>The fix introduces a new global variable fltk3::Widget* fltk3::e_widget
>set to the widget
>relative to which the functions fltk3::event_x() and event_y() return
>their values.
>This pointer allows to reliably transform FLTK3 event coordinates into
>FLTK1 event coordinates.
>
>It may make sense to also define a public FLTK3 utility function
>   fltk3::Widget* fltk3::event_widget() { return fltk3::e_widget; }
>that could be helpful to process fltk3::event_x() and fltk3::event_y()
>data.
>
>Modified:
>   branches/branch-3.0/include/FL/Fl.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-16 13:44:50 UTC (rev
>9502)
>+++ branches/branch-3.0/include/FL/Fl.H        2012-05-16 17:05:46 UTC (rev
>9503)
>@@ -300,11 +300,11 @@
>   }
>
>   static int event_x() {
>-    return fltk3::event_x();
>+    return fltk3::event_x() +
>(fltk3::e_widget->as_window()?0:fltk3::e_widget->dx_window());
>   }
>
>   static int event_y() {
>-    return fltk3::event_y();
>+    return fltk3::event_y() +
>(fltk3::e_widget->as_window()?0:fltk3::e_widget->dy_window());
>   }
>
>   static int event_x_root() {
>
>Modified: branches/branch-3.0/include/fltk3/run.h
>===================================================================
>--- branches/branch-3.0/include/fltk3/run.h    2012-05-16 13:44:50 UTC
>(rev 9502)
>+++ branches/branch-3.0/include/fltk3/run.h    2012-05-16 17:05:46 UTC
>(rev 9503)
>@@ -145,6 +145,7 @@
>   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_;
>
>Modified: branches/branch-3.0/src/fltk3/Widget.cxx
>===================================================================
>--- branches/branch-3.0/src/fltk3/Widget.cxx   2012-05-16 13:44:50 UTC
>(rev 9502)
>+++ branches/branch-3.0/src/fltk3/Widget.cxx   2012-05-16 17:05:46 UTC
>(rev 9503)
>@@ -513,7 +513,8 @@
>   int save_y = e_y; e_y = e_y_root-dy;
>
>   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;
>   int ret = handle(fltk3::e_number);
>
>   fltk3::e_number = old_event;
>
>Modified: branches/branch-3.0/src/fltk3/run.cxx
>===================================================================
>--- branches/branch-3.0/src/fltk3/run.cxx      2012-05-16 13:44:50 UTC (rev
>9502)
>+++ branches/branch-3.0/src/fltk3/run.cxx      2012-05-16 17:05:46 UTC (rev
>9503)
>@@ -96,6 +96,7 @@
> fltk3::Widget *fltk3::belowmouse_,
>               *fltk3::pushed_,
>               *fltk3::focus_,
>+              *fltk3::e_widget,
>               *fltk3::selection_owner_;
> int           fltk3::damage_,
>               fltk3::e_number,
>
>_______________________________________________
>fltk-commit mailing list
>[email protected]
>http://lists.easysw.com/mailman/listinfo/fltk-commit
_______________________________________________
fltk-dev mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-dev

Reply via email to