summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl.cxx25
-rw-r--r--src/Fl_Input.cxx6
-rw-r--r--src/Fl_Tooltip.cxx17
3 files changed, 30 insertions, 18 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx
index c7fd27136..949107ee7 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl.cxx,v 1.24.2.41.2.28 2002/05/13 15:43:09 easysw Exp $"
+// "$Id: Fl.cxx,v 1.24.2.41.2.29 2002/05/14 15:24:02 spitzak Exp $"
//
// Main event handling code for the Fast Light Tool Kit (FLTK).
//
@@ -424,7 +424,6 @@ void Fl::belowmouse(Fl_Widget *o) {
Fl_Widget *p = belowmouse_;
if (o != p) {
belowmouse_ = o;
- if (!dnd_flag) Fl_Tooltip::enter(o);
for (; p && !p->contains(o); p = p->parent()) {
p->handle(dnd_flag ? FL_DND_LEAVE : FL_LEAVE);
}
@@ -468,15 +467,15 @@ void fl_fix_focus() {
} else
Fl::focus(0);
- if (!Fl::pushed()) {
+ if (!(Fl::event_state() & 0x7f00000 /*FL_BUTTONS*/)) {
// set belowmouse based on Fl::modal() and fl_xmousewin:
w = fl_xmousewin;
if (w) {
if (Fl::modal()) w = Fl::modal();
if (!w->contains(Fl::belowmouse())) {
- Fl::belowmouse(w);
w->handle(FL_ENTER);
+ 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();
@@ -485,6 +484,7 @@ void fl_fix_focus() {
}
} else {
Fl::belowmouse(0);
+ Fl_Tooltip::enter(0);
}
}
}
@@ -534,9 +534,10 @@ static int send(int event, Fl_Widget* to, Fl_Window* window) {
int Fl::handle(int event, Fl_Window* window)
{
- Fl_Widget* w = window;
-
e_number = event;
+ if (fl_local_grab) return fl_local_grab(event);
+
+ Fl_Widget* w = window;
switch (event) {
@@ -648,6 +649,7 @@ int Fl::handle(int event, Fl_Window* window)
case FL_ENTER:
fl_xmousewin = window;
fl_fix_focus();
+ Fl_Tooltip::enter(belowmouse());
return 1;
case FL_LEAVE:
@@ -663,10 +665,13 @@ int Fl::handle(int event, Fl_Window* window)
default:
break;
}
- if (w && send(event, w, window)) return 1;
- int ret = send_handlers(event);
+ if (w && send(event, w, window)) {
+ dnd_flag = 0;
+ if (event == FL_MOVE) Fl_Tooltip::enter(belowmouse());
+ return 1;
+ }
dnd_flag = 0;
- return ret;
+ return send_handlers(event);
}
////////////////////////////////////////////////////////////////
@@ -892,5 +897,5 @@ void Fl_Window::flush() {
}
//
-// End of "$Id: Fl.cxx,v 1.24.2.41.2.28 2002/05/13 15:43:09 easysw Exp $".
+// End of "$Id: Fl.cxx,v 1.24.2.41.2.29 2002/05/14 15:24:02 spitzak Exp $".
//
diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx
index 304b5f4a3..0dafa564a 100644
--- a/src/Fl_Input.cxx
+++ b/src/Fl_Input.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Input.cxx,v 1.10.2.15.2.10 2002/05/06 04:15:21 easysw Exp $"
+// "$Id: Fl_Input.cxx,v 1.10.2.15.2.11 2002/05/14 15:24:03 spitzak Exp $"
//
// Input widget for the Fast Light Tool Kit (FLTK).
//
@@ -34,8 +34,6 @@
#include <FL/fl_draw.H>
#include <FL/fl_ask.H>
#include "flstring.h"
-#include <stdio.h>
-
void Fl_Input::draw() {
if (input_type() == FL_HIDDEN_INPUT) return;
@@ -395,5 +393,5 @@ Fl_Input::Fl_Input(int x, int y, int w, int h, const char *l)
}
//
-// End of "$Id: Fl_Input.cxx,v 1.10.2.15.2.10 2002/05/06 04:15:21 easysw Exp $".
+// End of "$Id: Fl_Input.cxx,v 1.10.2.15.2.11 2002/05/14 15:24:03 spitzak Exp $".
//
diff --git a/src/Fl_Tooltip.cxx b/src/Fl_Tooltip.cxx
index 2597d050e..f0ed3a17b 100644
--- a/src/Fl_Tooltip.cxx
+++ b/src/Fl_Tooltip.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tooltip.cxx,v 1.38.2.20 2002/05/13 17:23:10 easysw Exp $"
+// "$Id: Fl_Tooltip.cxx,v 1.38.2.21 2002/05/14 15:24:03 spitzak Exp $"
//
// Tooltip source file for the Fast Light Tool Kit (FLTK).
//
@@ -133,7 +133,6 @@ static void
tt_enter(Fl_Widget* widget) {
// printf("tt_enter(widget=%p)\n", widget);
// printf(" window=%p\n", window);
-
// find the enclosing group with a tooltip:
Fl_Widget* w = widget;
while (w && !w->tooltip()) {
@@ -164,6 +163,11 @@ Fl_Tooltip::enter_area(Fl_Widget* wid, int x,int y,int w,int h, const char* t)
widget = wid; X = x; Y = y; W = w; H = h; tip = t;
if (recent_tooltip || Fl_Tooltip::delay() < .1) {
// switch directly from a previous tooltip to the new one:
+#ifdef WIN32
+ // possible fix for the Windows titlebar, it seems to want the
+ // window to be destroyed, moving it messes up the parenting:
+ if (window) window->hide();
+#endif
tooltip_timeout(0);
} else {
if (window) window->hide();
@@ -173,7 +177,12 @@ Fl_Tooltip::enter_area(Fl_Widget* wid, int x,int y,int w,int h, const char* t)
tip = 0;
widget = 0;
if (window) window->hide();
- if (recent_tooltip) Fl::add_timeout(.2, recent_timeout);
+ if (recent_tooltip) {
+ if (Fl::event_state() & 0x7f00000 /*FL_BUTTONS*/)
+ recent_tooltip = 0;
+ else
+ Fl::add_timeout(.2, recent_timeout);
+ }
}
// printf(" tip=\"%s\", window->shown()=%d\n", tip ? tip : "(null)",
@@ -191,5 +200,5 @@ void Fl_Widget::tooltip(const char *tt) {
}
//
-// End of "$Id: Fl_Tooltip.cxx,v 1.38.2.20 2002/05/13 17:23:10 easysw Exp $".
+// End of "$Id: Fl_Tooltip.cxx,v 1.38.2.21 2002/05/14 15:24:03 spitzak Exp $".
//