diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 18:21:25 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 18:21:25 +0000 |
| commit | f9039b2ae21988783feae9b362818e7923e82d14 (patch) | |
| tree | 6d6fe3679d73448758f9794e7d4d4f6b22a4adad /src/Fl_Window_hotspot.cxx | |
| parent | 67e89232f9ba067825a158734a09e0fa21aacbe3 (diff) | |
Initial revision
git-svn-id: file:///fltk/svn/fltk/trunk@2 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Window_hotspot.cxx')
| -rw-r--r-- | src/Fl_Window_hotspot.cxx | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Fl_Window_hotspot.cxx b/src/Fl_Window_hotspot.cxx new file mode 100644 index 000000000..9a6f58a20 --- /dev/null +++ b/src/Fl_Window_hotspot.cxx @@ -0,0 +1,27 @@ +// Fl_Window_hotspot.C + +#include <FL/Fl.H> +#include <FL/Fl_Window.H> + +void Fl_Window::hotspot(int X, int Y, int offscreen) { + int mx,my; Fl::get_mouse(mx,my); + X = mx-X; Y = my-Y; + if (!offscreen) { + if (X < 0) X = 0; + if (X > Fl::w()-w()) X = Fl::w()-w(); + if (Y > Fl::h()-h()) Y = Fl::h()-h(); + if (Y < 0) Y = 0; + if (border() && Y < 20) Y = 20; + } + position(X,Y); +} + +void Fl_Window::hotspot(const Fl_Widget *o, int offscreen) { + int X = o->w()/2; + int Y = o->h()/2; + while (o != this) { + X += o->x(); Y += o->y(); + o = o->window(); + } + hotspot(X,Y,offscreen); +} |
