summaryrefslogtreecommitdiff
path: root/src/Fl.cxx
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2004-12-03 03:14:17 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2004-12-03 03:14:17 +0000
commitb5562132e5471c9ed3f714a12f8976d229e5ce0b (patch)
tree3ca615fe97afdfc038d57ad8be886a47c1a5f968 /src/Fl.cxx
parent416ff7f24ef0f2c1b9f3d1118366a0d33124ac1a (diff)
Fl::event_number() didn't always match the value sent to the
handle() method (STR #634) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@3930 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl.cxx')
-rw-r--r--src/Fl.cxx24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx
index 42f0a94b5..79ef28a0f 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl.cxx,v 1.24.2.41.2.71 2004/11/23 19:50:58 easysw Exp $"
+// "$Id: Fl.cxx,v 1.24.2.41.2.72 2004/12/03 03:14:15 easysw Exp $"
//
// Main event handling code for the Fast Light Tool Kit (FLTK).
//
@@ -447,10 +447,13 @@ void Fl::focus(Fl_Widget *o) {
Fl::compose_reset();
focus_ = o;
fl_oldfocus = 0;
+ int old_event = e_number;
+ e_number = FL_UNFOCUS;
for (; p; p = p->parent()) {
p->handle(FL_UNFOCUS);
fl_oldfocus = p;
}
+ e_number = old_event;
}
}
@@ -461,9 +464,12 @@ void Fl::belowmouse(Fl_Widget *o) {
Fl_Widget *p = belowmouse_;
if (o != p) {
belowmouse_ = o;
+ int old_event = e_number;
+ e_number = dnd_flag ? FL_DND_LEAVE : FL_LEAVE;
for (; p && !p->contains(o); p = p->parent()) {
- p->handle(dnd_flag ? FL_DND_LEAVE : FL_LEAVE);
+ p->handle(e_number);
}
+ e_number = old_event;
}
}
@@ -516,13 +522,17 @@ void fl_fix_focus() {
if (w) {
if (Fl::modal()) w = Fl::modal();
if (!w->contains(Fl::belowmouse())) {
- w->handle(FL_ENTER);
+ int old_event = Fl::e_number;
+ w->handle(Fl::e_number = FL_ENTER);
+ Fl::e_number = old_event;
if (!w->contains(Fl::belowmouse())) Fl::belowmouse(w);
} else {
// send a FL_MOVE event so the enter/leave state is up to date
Fl::e_x = Fl::e_x_root-fl_xmousewin->x();
Fl::e_y = Fl::e_y_root-fl_xmousewin->y();
- w->handle(FL_MOVE);
+ int old_event = Fl::e_number;
+ w->handle(Fl::e_number = FL_MOVE);
+ Fl::e_number = old_event;
}
} else {
Fl::belowmouse(0);
@@ -568,6 +578,7 @@ void fl_throw_focus(Fl_Widget *o) {
// window the event was posted to by X:
static int send(int event, Fl_Widget* to, Fl_Window* window) {
int dx, dy;
+ int old_event = Fl::e_number;
if (window) {
dx = window->x();
dy = window->y();
@@ -578,7 +589,8 @@ static int send(int event, Fl_Widget* to, Fl_Window* window) {
if (w->type()>=FL_WINDOW) {dx -= w->x(); dy -= w->y();}
int save_x = Fl::e_x; Fl::e_x += dx;
int save_y = Fl::e_y; Fl::e_y += dy;
- int ret = to->handle(event);
+ int ret = to->handle(Fl::e_number = event);
+ Fl::e_number = old_event;
Fl::e_y = save_y;
Fl::e_x = save_x;
return ret;
@@ -1096,5 +1108,5 @@ Fl::do_widget_deletion() {
//
-// End of "$Id: Fl.cxx,v 1.24.2.41.2.71 2004/11/23 19:50:58 easysw Exp $".
+// End of "$Id: Fl.cxx,v 1.24.2.41.2.72 2004/12/03 03:14:15 easysw Exp $".
//