summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2002-04-14 02:43:48 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2002-04-14 02:43:48 +0000
commit8e3cdc0ac1556f510e936b0e154c6ce513ec3604 (patch)
tree0c0f1bb0d2d46639e7324950e2a8a01d2ac2ffb3 /src
parentdc355ebb5477bd3c4374658d3db2a935ae3fb935 (diff)
Propagate events from the tooltip window to the widget we are tooltipping
for... Add "tooltips" resource for default state of tooltips. Fix another tooltip cycling problem. Fix default help and argument processing (didn't have the right min chars for matching, and didn't list new options) Update docos to list new tooltip resource and list of standard arguments. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2079 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
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 $".
//