summaryrefslogtreecommitdiff
path: root/src/Fl_Window_hotspot.cxx
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>1998-10-06 18:21:25 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>1998-10-06 18:21:25 +0000
commitf9039b2ae21988783feae9b362818e7923e82d14 (patch)
tree6d6fe3679d73448758f9794e7d4d4f6b22a4adad /src/Fl_Window_hotspot.cxx
parent67e89232f9ba067825a158734a09e0fa21aacbe3 (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.cxx27
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);
+}