summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Tooltip.cxx38
-rw-r--r--src/Fl_arg.cxx41
2 files changed, 63 insertions, 16 deletions
diff --git a/src/Fl_Tooltip.cxx b/src/Fl_Tooltip.cxx
index 0c35f2e33..5b1c8d1e6 100644
--- a/src/Fl_Tooltip.cxx
+++ b/src/Fl_Tooltip.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Tooltip.cxx,v 1.38.2.11 2002/04/09 17:20:24 easysw Exp $"
+// "$Id: Fl_Tooltip.cxx,v 1.38.2.12 2002/04/14 02:43:48 easysw Exp $"
//
// Tooltip source file for the Fast Light Tool Kit (FLTK).
//
@@ -68,8 +68,26 @@ class Fl_Tooltip_Window : public Fl_Menu_Window {
int
Fl_Tooltip_Window::handle(int event) {
- if (event == FL_KEYDOWN || event == FL_KEYUP || event == FL_SHORTCUT) return 0;
- else return Fl_Menu_Window::handle(event);
+ switch (event) {
+ case FL_KEYUP :
+ case FL_KEYDOWN :
+ case FL_SHORTCUT :
+ case FL_PUSH :
+ case FL_DRAG :
+ case FL_RELEASE :
+ case FL_MOUSEWHEEL :
+ if (Fl_Tooltip::widget) {
+ // Pass events to widget...
+ Fl::belowmouse(Fl_Tooltip::widget);
+ // Update event_x() and event_y() to be relative to the
+ // widget's window, not the tooltip window...
+ Fl::e_x = Fl::e_x_root - Fl_Tooltip::widget->window()->x();
+ Fl::e_y = Fl::e_y_root - Fl_Tooltip::widget->window()->y();
+ return Fl_Tooltip::widget->handle(event);
+ } else return 0;
+ default :
+ return Fl_Menu_Window::handle(event);
+ }
}
@@ -140,7 +158,14 @@ Fl_Tooltip::enter(Fl_Widget *w) {
// printf(" visible() = %d\n", w->visible());
// printf(" active() = %d\n", w->active());
// }
+ Fl_Widget* temp = w;
+ while (temp && !temp->tooltip()) {
+ if (temp == window) return; // Don't do anything if pointed at tooltip
+ temp = temp->parent();
+ }
+
if ((!w || !w->tooltip()) && tooltip_callback_ && window) {
+// puts("Hiding tooltip...");
Fl::remove_timeout(tooltip_callback_);
window->hide();
shown = 0;
@@ -173,6 +198,7 @@ Fl_Tooltip::tooltip_exit(Fl_Widget *w) {
widget = 0;
if (window) {
+// puts("Hiding tooltip...");
window->hide();
shown = 0;
}
@@ -196,6 +222,9 @@ Fl_Tooltip::tooltip_timeout(void *v) {
window->resizable(box);
window->end();
Fl_Group::current(saveCurrent);
+
+// printf("Fl_Tooltip::window = %p\n", window);
+// printf("Fl_Tooltip::box = %p\n", box);
}
if (!v)
@@ -209,6 +238,7 @@ Fl_Tooltip::tooltip_timeout(void *v) {
Fl_Window *widgetWindow = widget->window();
if (widgetWindow) {
+// puts("Showing tooltip");
Fl::grab(*widgetWindow);
window->show();
Fl::release();
@@ -220,5 +250,5 @@ Fl_Tooltip::tooltip_timeout(void *v) {
//
-// End of "$Id: Fl_Tooltip.cxx,v 1.38.2.11 2002/04/09 17:20:24 easysw Exp $".
+// End of "$Id: Fl_Tooltip.cxx,v 1.38.2.12 2002/04/14 02:43:48 easysw Exp $".
//
diff --git a/src/Fl_arg.cxx b/src/Fl_arg.cxx
index b0bb3ecd3..5f576ea41 100644
--- a/src/Fl_arg.cxx
+++ b/src/Fl_arg.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_arg.cxx,v 1.5.2.8.2.9 2002/04/13 22:17:46 easysw Exp $"
+// "$Id: Fl_arg.cxx,v 1.5.2.8.2.10 2002/04/14 02:43:48 easysw Exp $"
//
// Optional argument initialization code for the Fast Light Tool Kit (FLTK).
//
@@ -91,7 +91,7 @@ int Fl::arg(int argc, char **argv, int &i) {
Fl::visible_focus(0);
i++;
return 1;
- } else if (match(s, "dnd")) {
+ } else if (match(s, "dnd", 2)) {
Fl::dnd_text_ops(1);
i++;
return 1;
@@ -99,6 +99,14 @@ int Fl::arg(int argc, char **argv, int &i) {
Fl::dnd_text_ops(0);
i++;
return 1;
+ } else if (match(s, "tooltips", 2)) {
+ Fl_Tooltip::enable();
+ i++;
+ return 1;
+ } else if (match(s, "notooltips", 3)) {
+ Fl_Tooltip::disable();
+ i++;
+ return 1;
}
const char *v = argv[i+1];
@@ -113,26 +121,26 @@ int Fl::arg(int argc, char **argv, int &i) {
geometry = v;
#if !defined(WIN32) && !defined(__APPLE__)
- } else if (match(s, "display")) {
+ } else if (match(s, "display", 2)) {
Fl::display(v);
#endif
- } else if (match(s, "title")) {
+ } else if (match(s, "title", 2)) {
title = v;
- } else if (match(s, "name")) {
+ } else if (match(s, "name", 2)) {
name = v;
} else if (match(s, "bg2", 3) || match(s, "background2", 11)) {
fl_bg2 = v;
- } else if (match(s, "bg") || match(s, "background")) {
+ } else if (match(s, "bg", 2) || match(s, "background", 10)) {
fl_bg = v;
- } else if (match(s, "fg") || match(s, "foreground")) {
+ } else if (match(s, "fg", 2) || match(s, "foreground", 10)) {
fl_fg = v;
- } else if (match(s, "scheme")) {
+ } else if (match(s, "scheme", 1)) {
Fl::scheme(v);
} else return 0; // unrecognized
@@ -176,6 +184,11 @@ void Fl_Window::show(int argc, char **argv) {
strcasecmp(val, "on") == 0 ||
strcasecmp(val, "yes") == 0);
+ val = XGetDefault(fl_display, key, "tooltips");
+ if (val) Fl_Tooltip::enable(strcasecmp(val, "true") == 0 ||
+ strcasecmp(val, "on") == 0 ||
+ strcasecmp(val, "yes") == 0);
+
val = XGetDefault(fl_display, key, "visibleFocus");
if (val) Fl::visible_focus(strcasecmp(val, "true") == 0 ||
strcasecmp(val, "on") == 0 ||
@@ -239,15 +252,19 @@ static const char * const helpmsg =
"options are:\n"
" -bg2 color\n"
" -bg color\n"
-" -d[isplay] host:n.n\n"
+" -di[splay] host:n.n\n"
+" -dn[d]\n"
" -fg color\n"
" -g[eometry] WxH+X+Y\n"
" -i[conic]\n"
" -k[bd]\n"
-" -n[ame] classname\n"
+" -na[me] classname\n"
+" -nod[nd]\n"
" -nok[bd]\n"
+" -not[ooltips]\n"
" -s[cheme] scheme\n"
-" -t[itle] windowtitle";
+" -ti[tle] windowtitle\n";
+" -to[oltips]";
const char * const Fl::help = helpmsg+13;
@@ -394,5 +411,5 @@ int XParseGeometry(const char* string, int* x, int* y,
#endif // ifdef WIN32
//
-// End of "$Id: Fl_arg.cxx,v 1.5.2.8.2.9 2002/04/13 22:17:46 easysw Exp $".
+// End of "$Id: Fl_arg.cxx,v 1.5.2.8.2.10 2002/04/14 02:43:48 easysw Exp $".
//