diff options
| -rw-r--r-- | CHANGES | 4 | ||||
| -rw-r--r-- | FL/Fl_Tooltip.H | 5 | ||||
| -rw-r--r-- | documentation/Fl.html | 81 | ||||
| -rw-r--r-- | documentation/osissues.html | 3 | ||||
| -rw-r--r-- | src/Fl_Tooltip.cxx | 38 | ||||
| -rw-r--r-- | src/Fl_arg.cxx | 41 |
6 files changed, 136 insertions, 36 deletions
@@ -1,12 +1,14 @@ CHANGES IN FLTK 1.1.0 + - Now pass correctly pass keyboard and mouse events to + widget under tooltip as needed... - Added new Fl::dnd_text_ops() methods to enable/disable drag-and-drop text operations. - Fl_Input now supports clicking inside a selection to set the new text position when drag-and-drop is enabled. - Added support of X resources for scheme, dnd_text_ops, - and visible_focus... + tooltips, and visible_focus... - Fixed some case problems in includes for the MacOS X code. - Fl_Widget::handle() returned 1 for FL_ENTER and diff --git a/FL/Fl_Tooltip.H b/FL/Fl_Tooltip.H index 11858d4f4..785059ba1 100644 --- a/FL/Fl_Tooltip.H +++ b/FL/Fl_Tooltip.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Tooltip.H,v 1.16.2.6 2002/04/09 17:20:23 easysw Exp $" +// "$Id: Fl_Tooltip.H,v 1.16.2.7 2002/04/14 02:43:48 easysw Exp $" // // Tooltip header file for the Fast Light Tool Kit (FLTK). // @@ -36,6 +36,7 @@ class Fl_Tooltip_Window; class FL_EXPORT Fl_Tooltip { friend class Fl_Tooltip_Box; + friend class Fl_Tooltip_Window; friend class Fl_Widget; static float delay_; @@ -76,5 +77,5 @@ public: #endif // -// End of "$Id: Fl_Tooltip.H,v 1.16.2.6 2002/04/09 17:20:23 easysw Exp $". +// End of "$Id: Fl_Tooltip.H,v 1.16.2.7 2002/04/14 02:43:48 easysw Exp $". // diff --git a/documentation/Fl.html b/documentation/Fl.html index 3cefeda3f..7b4e6f5c3 100644 --- a/documentation/Fl.html +++ b/documentation/Fl.html @@ -278,26 +278,73 @@ than <tt>argc</tt>. <P>All switches except -bg2 may be abbreviated one letter and case is ignored: <UL> -<LI><tt>-display host:n.n</tt> The X display to use (ignored under -WIN32). </LI> -<LI><tt>-geometry WxH+X+Y</tt> The window position and size will be -modified according the the standard X geometry string. </LI> -<LI><tt>-name string</tt> Fl_Window::xclass(string) will be done to -the window, possibly changing its icon. </LI> -<LI><tt>-title string</tt> Fl_Window::label(string) will be done to -the window, changing both its title and the icontitle. </LI> -<LI><tt>-iconic</tt> Fl_Window::iconize() will be done to the window. </LI> -<LI><tt>-bg color</tt> XParseColor is used to lookup the passed color -and then Fl::background() is done. Under WIN32 only color names of -the form "#xxxxxx" are understood. </LI> -<LI><tt>-bg2 color</tt> XParseColor is used to lookup the passed color -and then Fl::background2() is done. </LI> -<LI><tt>-fg color</tt> XParseColor is used to lookup the passed color -and then Fl::foreground() is done. </LI> + + <LI><TT>-bg color</TT> or <TT>-background color</TT> + + <P>Sets the background color using <A + HREF="#Fl.background"><TT>Fl::background()</TT></A>.</LI> + + <LI><TT>-bg2 color</TT> or <TT>-background2 color</TT> + + <P>Sets the secondary background color using <A + HREF="#Fl.background2"><TT>Fl::background2()</TT></A>.</LI> + + <LI><TT>-display host:n.n</TT> + + <P>Sets the X display to use; this option is silently + ignored under WIN32 and MacOS.</LI> + + <LI><TT>-dnd</TT> and <TT>-nodnd</TT> + + <P>Enables or disables drag and drop text operations + using <A + HREF="#Fl.dnd_text_ops"><TT>Fl::dnd_text_ops()</TT></A>.</LI> + + <LI><TT>-fg color</TT> or <TT>-foreground color</TT> + + <P>Sets the foreground color using <A + HREF="#Fl.foreground"><TT>Fl::foreground()</TT></A>.</LI> + + <LI><TT>-geometry WxH+X+Y</TT> + + <P>Sets the initial window position and size according + the the standard X geometry string.</LI> + + <LI><TT>-iconic</TT> + + <P>Iconifies the window using <A + HREF="Fl_Window.html#Fl_Window.iconize"><TT>Fl_Window::iconize()</TT></A>.</LI> + + <LI><TT>-kbd</TT> and <TT>-nokbd</TT> + + <P>Enables or disables visible keyboard focus for + non-text widgets using <A + HREF="#Fl.visible_focus"><TT>Fl::visible_focus()</TT></A>.</LI> + + <LI><TT>-name string</TT> + + <P>Sets the window class using <A + HREF="Fl_Window.html#Fl_Window.xclass"><TT>Fl_Window::xclass()</TT></A>.</LI> + + <LI><TT>-scheme string</TT> + + <P>Sets the widget scheme using <A + HREF="#Fl.scheme"><TT>Fl::scheme()</TT></A>.</LI> + + <LI><TT>-title string</TT> + + <P>Sets the window title using <A + HREF="Fl_Window.html#Fl_Window.label"><TT>Fl_Window::label()</TT></A>.</LI> + + <LI><TT>-tooltips</TT> and <TT>-notooltips</TT> + + <P>Enables or disables tooltips using <A + HREF="Fl_Tooltip.html#Fl_Tooltip.enable"><TT>Fl_Tooltip::enable()</TT></A>.</LI> + </UL> <P>The second form of <tt>Fl::args()</tt> is useful if your program does -not have command line switches of its own. It parses all the switches, +not have command line switches of its own. It parses all the switches, and if any are not recognized it calls <tt>Fl::abort(Fl::help)</tt>. <P>A usage string is displayed if <tt>Fl::args()</tt> detects an invalid diff --git a/documentation/osissues.html b/documentation/osissues.html index 29217d06d..2836b21a5 100644 --- a/documentation/osissues.html +++ b/documentation/osissues.html @@ -393,6 +393,9 @@ resources: <LI><TT>Text.background</TT> - The default background color for text fields (color). + <LI><TT>tooltips</TT> - The default setting for + tooltips (boolean). + <LI><TT>visibleFocus</TT> - The default setting for visible keyboard focus on non-text widgets (boolean). 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 $". // |
