First bunch of changes for the 1.1 branch - tooltips.
NOTE: looking into a problem with the tooltip not going away when you ESCape a window (close it)... git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1514 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
3cb5ebe0e8
commit
bd06913057
49
CHANGES
49
CHANGES
@ -1,4 +1,51 @@
|
|||||||
CHANGES SINCE FLTK 1.0.11
|
CHANGES IN FLTK 1.1.0
|
||||||
|
|
||||||
|
TODO - Added new image(), active_image(), and
|
||||||
|
inactive_image() methods to support image + text
|
||||||
|
labels more easily.
|
||||||
|
|
||||||
|
TODO - Added new alignment bit FL_ALIGN_TEXT_OVER_IMAGE.
|
||||||
|
|
||||||
|
- Added tooltip support using Jacques Tremblay's tooltip
|
||||||
|
patch.
|
||||||
|
|
||||||
|
TODO - Added keyboard navigation to all widgets.
|
||||||
|
|
||||||
|
PARTIAL - Added support for mouse wheels using the new
|
||||||
|
FL_MOUSEWHEEL event type.
|
||||||
|
|
||||||
|
TODO - Added the Fl_Check_Browser, Fl_FileBrowser,
|
||||||
|
Fl_FileChooser, Fl_FileIcon, Fl_HelpDialog,
|
||||||
|
Fl_HelpView, Fl_Tree_Browser, and Fl_Wizard widgets
|
||||||
|
from the bazaar.
|
||||||
|
|
||||||
|
TODO - Added 2.0 Fl_Text_Display and Fl_Text_Editor widgets
|
||||||
|
based on NEdit.
|
||||||
|
|
||||||
|
TODO - The Fl_Choice widget now looks more line a combo box
|
||||||
|
than a Motif option menu.
|
||||||
|
|
||||||
|
TODO - Moved the OpenGL widgets into a separate library
|
||||||
|
called fltkgl - this eliminates shared library
|
||||||
|
dependencies on OpenGL when no OpenGL functionality is
|
||||||
|
used/required.
|
||||||
|
|
||||||
|
TODO - Colors are now 32 bits in FLTK, allowing the use and
|
||||||
|
selection of 24-bit RGB values or 8-bit FLTK indexed
|
||||||
|
colors.
|
||||||
|
|
||||||
|
TODO - FLUID now supports the new Fl_CheckBrowser,
|
||||||
|
Fl_FileBrowser, Fl_FileIcon, Fl_HelpView,
|
||||||
|
Fl_Text_Display, Fl_Text_Editor, Fl_Tree_Browser, and
|
||||||
|
Fl_Wizard widgets.
|
||||||
|
|
||||||
|
TODO - Documentation updates.
|
||||||
|
|
||||||
|
TODO - Updated configure stuff to support shared libraries
|
||||||
|
under AIX (link to -lfltk_s)
|
||||||
|
|
||||||
|
TODO - Symbol labels can now contain regular text and
|
||||||
|
Fl_Browser font and color controls.
|
||||||
|
|
||||||
- Fl_Menu_Item::add() didn't use the flags that were
|
- Fl_Menu_Item::add() didn't use the flags that were
|
||||||
passed in.
|
passed in.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Enumerations.H,v 1.18.2.14 2001/01/22 15:13:37 easysw Exp $"
|
// "$Id: Enumerations.H,v 1.18.2.14.2.1 2001/08/01 21:24:48 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Enumerations for the Fast Light Tool Kit (FLTK).
|
// Enumerations for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -55,8 +55,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#define FL_MAJOR_VERSION 1
|
#define FL_MAJOR_VERSION 1
|
||||||
#define FL_MINOR_VERSION 0
|
#define FL_MINOR_VERSION 1
|
||||||
#define FL_PATCH_VERSION 11
|
#define FL_PATCH_VERSION 0
|
||||||
#define FL_VERSION ((double)FL_MAJOR_VERSION + \
|
#define FL_VERSION ((double)FL_MAJOR_VERSION + \
|
||||||
(double)FL_MINOR_VERSION * 0.01 + \
|
(double)FL_MINOR_VERSION * 0.01 + \
|
||||||
(double)FL_PATCH_VERSION * 0.0001)
|
(double)FL_PATCH_VERSION * 0.0001)
|
||||||
@ -82,7 +82,8 @@ enum Fl_Event { // events
|
|||||||
FL_HIDE = 15,
|
FL_HIDE = 15,
|
||||||
FL_SHOW = 16,
|
FL_SHOW = 16,
|
||||||
FL_PASTE = 17,
|
FL_PASTE = 17,
|
||||||
FL_SELECTIONCLEAR = 18
|
FL_SELECTIONCLEAR = 18,
|
||||||
|
FL_MOUSEWHEEL = 19
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Fl_When { // Fl_Widget::when():
|
enum Fl_When { // Fl_Widget::when():
|
||||||
@ -371,5 +372,5 @@ enum Fl_Damage {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Enumerations.H,v 1.18.2.14 2001/01/22 15:13:37 easysw Exp $".
|
// End of "$Id: Enumerations.H,v 1.18.2.14.2.1 2001/08/01 21:24:48 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Tooltip.H,v 1.16 2001/02/25 01:41:19 clip Exp $"
|
// "$Id: Fl_Tooltip.H,v 1.16.2.1 2001/08/01 21:24:48 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Tooltip definitions for the Fast Light Tool Kit (FLTK).
|
// Tooltip header file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-1999 by Bill Spitzak and others.
|
// Copyright 1998-2001 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@ -20,53 +20,60 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
// USA.
|
// USA.
|
||||||
//
|
//
|
||||||
// Please report all bugs and problems to "fltk-bugs@easysw.com".
|
// Please report all bugs and problems to "fltk-bugs@fltk.org".
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef _FL_TOOLTIP_H_
|
#ifndef _Fl_Tooltip_H_
|
||||||
#define _FL_TOOLTIP_H_
|
#define _Fl_Tooltip_H_
|
||||||
|
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include <FL/Fl_Widget.H>
|
#include <FL/Fl_Widget.H>
|
||||||
|
|
||||||
class FL_API Fl_Tooltip {
|
|
||||||
public:
|
|
||||||
static float delay() { return delay_; }
|
|
||||||
static void delay(float f) { delay_ = f; }
|
|
||||||
static int enabled() { return enabled_; }
|
|
||||||
static void enable(int b = 1) { enabled_ = b; }
|
|
||||||
static void disable() { enable(0); }
|
|
||||||
|
|
||||||
// This is called when the pointer enters a widget,
|
class Fl_TooltipBox;
|
||||||
// Also enter(0) gets rid of any displayed or pending tooltip:
|
class Fl_Menu_Window;
|
||||||
static void (*enter)(Fl_Widget* w);
|
|
||||||
|
|
||||||
// A widget may also pop up tooltips for internal parts by calling this:
|
FL_EXPORT class Fl_Tooltip {
|
||||||
static void (*enter_area)(Fl_Widget* w, int X, int Y, int W, int H, const char* tip);
|
|
||||||
|
|
||||||
// This is called when a widget is destroyed or hidden:
|
friend class Fl_TooltipBox;
|
||||||
static void (*exit)(Fl_Widget *w);
|
friend class Fl_Widget;
|
||||||
|
|
||||||
static Fl_Style* style() { return default_style; }
|
|
||||||
static Fl_Font font() { return style()->label_font; }
|
|
||||||
static void font(Fl_Font i) { style()->label_font = i; }
|
|
||||||
static unsigned size() { return style()->label_size; }
|
|
||||||
static void size(unsigned s) { style()->label_size = s; }
|
|
||||||
static void color(Fl_Color c) { style()->color = c; }
|
|
||||||
static Fl_Color color() { return style()->color; }
|
|
||||||
static void textcolor(Fl_Color c) {style()->label_color = c; }
|
|
||||||
static Fl_Color textcolor() { return style()->label_color; }
|
|
||||||
static void boxtype(Fl_Boxtype b) {style()->box = b; }
|
|
||||||
static Fl_Boxtype boxtype() { return style()->box; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
static Fl_Named_Style* default_style;
|
|
||||||
static float delay_;
|
static float delay_;
|
||||||
static int enabled_;
|
static Fl_TooltipBox *box;
|
||||||
|
static Fl_Menu_Window *window;
|
||||||
|
static Fl_Widget *widget;
|
||||||
|
static int shown;
|
||||||
|
static uchar color_;
|
||||||
|
static int font_;
|
||||||
|
static int size_;
|
||||||
|
|
||||||
|
static void tooltip_timeout(void *);
|
||||||
|
static void tooltip_exit(Fl_Widget *);
|
||||||
|
|
||||||
|
static void (*tooltip_callback_)(void *);
|
||||||
|
static void (*tooltip_exit_)(void *);
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// These functions are user-called functions
|
||||||
|
static float tooltip_delay() { return delay_; }
|
||||||
|
static void tooltip_delay(float f) { delay_ = (f < 0.1) ? 0.1 : f; }
|
||||||
|
static int font() { return font_; }
|
||||||
|
static int size() { return size_; }
|
||||||
|
static void font(int i) { font_ = i; }
|
||||||
|
static void size(int s) { size_ = s; }
|
||||||
|
static void color(uchar c) { color_ = c; }
|
||||||
|
static uchar color() { return color_; }
|
||||||
|
|
||||||
|
static void enter(Fl_Widget *w);
|
||||||
|
static void exit(Fl_Widget *w);
|
||||||
|
static void enable() {tooltip_callback_ = tooltip_timeout; tooltip_exit_ = (void (*)(void *))tooltip_exit;}
|
||||||
|
static void disable() {tooltip_callback_ = 0; tooltip_exit_ = 0;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Tooltip.H,v 1.16 2001/02/25 01:41:19 clip Exp $".
|
// End of "$Id: Fl_Tooltip.H,v 1.16.2.1 2001/08/01 21:24:48 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
175
FL/Fl_Widget.H
175
FL/Fl_Widget.H
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Widget.H,v 1.6.2.4 2001/01/22 15:13:38 easysw Exp $"
|
// "$Id: Fl_Widget.H,v 1.6.2.4.2.1 2001/08/01 21:24:48 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Widget header file for the Fast Light Tool Kit (FLTK).
|
// Widget header file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -27,6 +27,7 @@
|
|||||||
#define Fl_Widget_H
|
#define Fl_Widget_H
|
||||||
|
|
||||||
#include "Enumerations.H"
|
#include "Enumerations.H"
|
||||||
|
#include "Fl_Tooltip.H"
|
||||||
|
|
||||||
class Fl_Widget;
|
class Fl_Widget;
|
||||||
class Fl_Window;
|
class Fl_Window;
|
||||||
@ -46,7 +47,7 @@ struct Fl_Label {
|
|||||||
FL_EXPORT void measure(int&, int&) const ;
|
FL_EXPORT void measure(int&, int&) const ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Fl_Widget {
|
FL_EXPORT class Fl_Widget {
|
||||||
friend class Fl_Group;
|
friend class Fl_Group;
|
||||||
|
|
||||||
Fl_Widget* parent_;
|
Fl_Widget* parent_;
|
||||||
@ -63,6 +64,8 @@ class Fl_Widget {
|
|||||||
uchar align_;
|
uchar align_;
|
||||||
uchar when_;
|
uchar when_;
|
||||||
|
|
||||||
|
const char *tooltip_;
|
||||||
|
|
||||||
// "de-implement" the copy constructors:
|
// "de-implement" the copy constructors:
|
||||||
Fl_Widget & operator=(const Fl_Widget &);
|
Fl_Widget & operator=(const Fl_Widget &);
|
||||||
FL_EXPORT Fl_Widget(const Fl_Widget &);
|
FL_EXPORT Fl_Widget(const Fl_Widget &);
|
||||||
@ -89,98 +92,100 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual FL_EXPORT ~Fl_Widget();
|
virtual ~Fl_Widget();
|
||||||
|
|
||||||
virtual FL_EXPORT void draw() = 0;
|
virtual void draw() = 0;
|
||||||
virtual FL_EXPORT int handle(int);
|
virtual int handle(int);
|
||||||
FL_EXPORT Fl_Widget* parent() const {return parent_;}
|
Fl_Widget* parent() const {return parent_;}
|
||||||
FL_EXPORT void parent(Fl_Widget* w) {parent_ = w;} // for hacks only
|
void parent(Fl_Widget* w) {parent_ = w;} // for hacks only
|
||||||
|
|
||||||
FL_EXPORT uchar type() const {return type_;}
|
uchar type() const {return type_;}
|
||||||
FL_EXPORT void type(uchar t) {type_ = t;}
|
void type(uchar t) {type_ = t;}
|
||||||
|
|
||||||
FL_EXPORT int x() const {return x_;}
|
int x() const {return x_;}
|
||||||
FL_EXPORT int y() const {return y_;}
|
int y() const {return y_;}
|
||||||
FL_EXPORT int w() const {return w_;}
|
int w() const {return w_;}
|
||||||
FL_EXPORT int h() const {return h_;}
|
int h() const {return h_;}
|
||||||
virtual FL_EXPORT void resize(int,int,int,int);
|
virtual void resize(int,int,int,int);
|
||||||
FL_EXPORT int damage_resize(int,int,int,int);
|
int damage_resize(int,int,int,int);
|
||||||
FL_EXPORT void position(int X,int Y) {resize(X,Y,w_,h_);}
|
void position(int X,int Y) {resize(X,Y,w_,h_);}
|
||||||
FL_EXPORT void size(int W,int H) {resize(x_,y_,W,H);}
|
void size(int W,int H) {resize(x_,y_,W,H);}
|
||||||
|
|
||||||
FL_EXPORT Fl_Align align() const {return (Fl_Align)align_;}
|
Fl_Align align() const {return (Fl_Align)align_;}
|
||||||
FL_EXPORT void align(uchar a) {align_ = a;}
|
void align(uchar a) {align_ = a;}
|
||||||
FL_EXPORT Fl_Boxtype box() const {return (Fl_Boxtype)box_;}
|
Fl_Boxtype box() const {return (Fl_Boxtype)box_;}
|
||||||
FL_EXPORT void box(Fl_Boxtype a) {box_ = a;}
|
void box(Fl_Boxtype a) {box_ = a;}
|
||||||
FL_EXPORT Fl_Color color() const {return (Fl_Color)color_;}
|
Fl_Color color() const {return (Fl_Color)color_;}
|
||||||
FL_EXPORT void color(uchar a) {color_ = a;}
|
void color(uchar a) {color_ = a;}
|
||||||
FL_EXPORT Fl_Color selection_color() const {return (Fl_Color)color2_;}
|
Fl_Color selection_color() const {return (Fl_Color)color2_;}
|
||||||
FL_EXPORT void selection_color(uchar a) {color2_ = a;}
|
void selection_color(uchar a) {color2_ = a;}
|
||||||
FL_EXPORT void color(uchar a, uchar b) {color_=a; color2_=b;}
|
void color(uchar a, uchar b) {color_=a; color2_=b;}
|
||||||
FL_EXPORT const char* label() const {return label_.value;}
|
const char* label() const {return label_.value;}
|
||||||
FL_EXPORT void label(const char* a) {label_.value=a;}
|
void label(const char* a) {label_.value=a;}
|
||||||
FL_EXPORT void label(Fl_Labeltype a,const char* b) {label_.type = a; label_.value = b;}
|
void label(Fl_Labeltype a,const char* b) {label_.type = a; label_.value = b;}
|
||||||
FL_EXPORT Fl_Labeltype labeltype() const {return (Fl_Labeltype)label_.type;}
|
Fl_Labeltype labeltype() const {return (Fl_Labeltype)label_.type;}
|
||||||
FL_EXPORT void labeltype(Fl_Labeltype a) {label_.type = a;}
|
void labeltype(Fl_Labeltype a) {label_.type = a;}
|
||||||
FL_EXPORT Fl_Color labelcolor() const {return (Fl_Color)label_.color;}
|
Fl_Color labelcolor() const {return (Fl_Color)label_.color;}
|
||||||
FL_EXPORT void labelcolor(uchar a) {label_.color=a;}
|
void labelcolor(uchar a) {label_.color=a;}
|
||||||
FL_EXPORT Fl_Font labelfont() const {return (Fl_Font)label_.font;}
|
Fl_Font labelfont() const {return (Fl_Font)label_.font;}
|
||||||
FL_EXPORT void labelfont(uchar a) {label_.font=a;}
|
void labelfont(uchar a) {label_.font=a;}
|
||||||
FL_EXPORT uchar labelsize() const {return label_.size;}
|
uchar labelsize() const {return label_.size;}
|
||||||
FL_EXPORT void labelsize(uchar a) {label_.size=a;}
|
void labelsize(uchar a) {label_.size=a;}
|
||||||
FL_EXPORT Fl_Callback_p callback() const {return callback_;}
|
const char *tooltip() const {return tooltip_;}
|
||||||
FL_EXPORT void callback(Fl_Callback* c, void* p) {callback_=c; user_data_=p;}
|
void tooltip(const char *t) {Fl_Tooltip::enable(); tooltip_ = t;}
|
||||||
FL_EXPORT void callback(Fl_Callback* c) {callback_=c;}
|
Fl_Callback_p callback() const {return callback_;}
|
||||||
FL_EXPORT void callback(Fl_Callback0*c) {callback_=(Fl_Callback*)c;}
|
void callback(Fl_Callback* c, void* p) {callback_=c; user_data_=p;}
|
||||||
FL_EXPORT void callback(Fl_Callback1*c, long p=0) {callback_=(Fl_Callback*)c; user_data_=(void*)p;}
|
void callback(Fl_Callback* c) {callback_=c;}
|
||||||
FL_EXPORT void* user_data() const {return user_data_;}
|
void callback(Fl_Callback0*c) {callback_=(Fl_Callback*)c;}
|
||||||
FL_EXPORT void user_data(void* v) {user_data_ = v;}
|
void callback(Fl_Callback1*c, long p=0) {callback_=(Fl_Callback*)c; user_data_=(void*)p;}
|
||||||
FL_EXPORT long argument() const {return (long)user_data_;}
|
void* user_data() const {return user_data_;}
|
||||||
FL_EXPORT void argument(long v) {user_data_ = (void*)v;}
|
void user_data(void* v) {user_data_ = v;}
|
||||||
FL_EXPORT Fl_When when() const {return (Fl_When)when_;}
|
long argument() const {return (long)user_data_;}
|
||||||
FL_EXPORT void when(uchar i) {when_ = i;}
|
void argument(long v) {user_data_ = (void*)v;}
|
||||||
|
Fl_When when() const {return (Fl_When)when_;}
|
||||||
|
void when(uchar i) {when_ = i;}
|
||||||
|
|
||||||
FL_EXPORT int visible() const {return !(flags_&INVISIBLE);}
|
int visible() const {return !(flags_&INVISIBLE);}
|
||||||
FL_EXPORT int visible_r() const;
|
int visible_r() const;
|
||||||
FL_EXPORT void show();
|
void show();
|
||||||
FL_EXPORT void hide();
|
void hide();
|
||||||
FL_EXPORT void set_visible() {flags_ &= ~INVISIBLE;}
|
void set_visible() {flags_ &= ~INVISIBLE;}
|
||||||
FL_EXPORT void clear_visible() {flags_ |= INVISIBLE;}
|
void clear_visible() {flags_ |= INVISIBLE;}
|
||||||
FL_EXPORT int active() const {return !(flags_&INACTIVE);}
|
int active() const {return !(flags_&INACTIVE);}
|
||||||
FL_EXPORT int active_r() const;
|
int active_r() const;
|
||||||
FL_EXPORT void activate();
|
void activate();
|
||||||
FL_EXPORT void deactivate();
|
void deactivate();
|
||||||
FL_EXPORT int output() const {return (flags_&OUTPUT);}
|
int output() const {return (flags_&OUTPUT);}
|
||||||
FL_EXPORT void set_output() {flags_ |= OUTPUT;}
|
void set_output() {flags_ |= OUTPUT;}
|
||||||
FL_EXPORT void clear_output() {flags_ &= ~OUTPUT;}
|
void clear_output() {flags_ &= ~OUTPUT;}
|
||||||
FL_EXPORT int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));}
|
int takesevents() const {return !(flags_&(INACTIVE|INVISIBLE|OUTPUT));}
|
||||||
FL_EXPORT int changed() const {return flags_&CHANGED;}
|
int changed() const {return flags_&CHANGED;}
|
||||||
FL_EXPORT void set_changed() {flags_ |= CHANGED;}
|
void set_changed() {flags_ |= CHANGED;}
|
||||||
FL_EXPORT void clear_changed() {flags_ &= ~CHANGED;}
|
void clear_changed() {flags_ &= ~CHANGED;}
|
||||||
FL_EXPORT int take_focus();
|
int take_focus();
|
||||||
|
|
||||||
static FL_EXPORT void default_callback(Fl_Widget*, void*);
|
static void default_callback(Fl_Widget*, void*);
|
||||||
FL_EXPORT void do_callback() {callback_(this,user_data_);}
|
void do_callback() {callback_(this,user_data_);}
|
||||||
FL_EXPORT void do_callback(Fl_Widget* o,void* arg=0) {callback_(o,arg);}
|
void do_callback(Fl_Widget* o,void* arg=0) {callback_(o,arg);}
|
||||||
FL_EXPORT void do_callback(Fl_Widget* o,long arg) {callback_(o,(void*)arg);}
|
void do_callback(Fl_Widget* o,long arg) {callback_(o,(void*)arg);}
|
||||||
FL_EXPORT int test_shortcut();
|
int test_shortcut();
|
||||||
static FL_EXPORT int test_shortcut(const char*);
|
static int test_shortcut(const char*);
|
||||||
FL_EXPORT int contains(const Fl_Widget*) const ;
|
int contains(const Fl_Widget*) const ;
|
||||||
FL_EXPORT int inside(const Fl_Widget* o) const {return o ? o->contains(this) : 0;}
|
int inside(const Fl_Widget* o) const {return o ? o->contains(this) : 0;}
|
||||||
|
|
||||||
FL_EXPORT void redraw();
|
void redraw();
|
||||||
FL_EXPORT uchar damage() const {return damage_;}
|
uchar damage() const {return damage_;}
|
||||||
FL_EXPORT void clear_damage(uchar c = 0) {damage_ = c;}
|
void clear_damage(uchar c = 0) {damage_ = c;}
|
||||||
FL_EXPORT void damage(uchar c);
|
void damage(uchar c);
|
||||||
FL_EXPORT void damage(uchar c,int,int,int,int);
|
void damage(uchar c,int,int,int,int);
|
||||||
FL_EXPORT void draw_label(int, int, int, int, Fl_Align) const;
|
void draw_label(int, int, int, int, Fl_Align) const;
|
||||||
FL_EXPORT void measure_label(int& x, int& y) {label_.measure(x,y);}
|
void measure_label(int& x, int& y) {label_.measure(x,y);}
|
||||||
|
|
||||||
FL_EXPORT Fl_Window* window() const ;
|
Fl_Window* window() const ;
|
||||||
|
|
||||||
// back compatability only:
|
// back compatability only:
|
||||||
FL_EXPORT Fl_Color color2() const {return (Fl_Color)color2_;}
|
Fl_Color color2() const {return (Fl_Color)color2_;}
|
||||||
FL_EXPORT void color2(uchar a) {color2_ = a;}
|
void color2(uchar a) {color2_ = a;}
|
||||||
};
|
};
|
||||||
|
|
||||||
// reserved type numbers (necessary for my cheapo RTTI) start here.
|
// reserved type numbers (necessary for my cheapo RTTI) start here.
|
||||||
@ -191,5 +196,5 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Widget.H,v 1.6.2.4 2001/01/22 15:13:38 easysw Exp $".
|
// End of "$Id: Fl_Widget.H,v 1.6.2.4.2.1 2001/08/01 21:24:48 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
13
Makefile
13
Makefile
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# "$Id: Makefile,v 1.12.2.6 2001/03/14 17:20:01 spitzak Exp $"
|
# "$Id: Makefile,v 1.12.2.6.2.1 2001/08/01 21:24:48 easysw Exp $"
|
||||||
#
|
#
|
||||||
# Top-level makefile for the Fast Light Tool Kit (FLTK).
|
# Top-level makefile for the Fast Light Tool Kit (FLTK).
|
||||||
#
|
#
|
||||||
@ -23,8 +23,7 @@
|
|||||||
# Please report all bugs and problems to "fltk-bugs@fltk.org".
|
# Please report all bugs and problems to "fltk-bugs@fltk.org".
|
||||||
#
|
#
|
||||||
|
|
||||||
SHELL=/bin/sh
|
SHELL = /bin/sh
|
||||||
|
|
||||||
DIRS = src fluid test
|
DIRS = src fluid test
|
||||||
|
|
||||||
all: makeinclude
|
all: makeinclude
|
||||||
@ -66,11 +65,15 @@ distclean: clean
|
|||||||
rm -f config.log config.h config.status makeinclude
|
rm -f config.log config.h config.status makeinclude
|
||||||
|
|
||||||
makeinclude: configure configh.in makeinclude.in
|
makeinclude: configure configh.in makeinclude.in
|
||||||
./configure
|
if test -f config.status; then \
|
||||||
|
./config.status --recheck; \
|
||||||
|
else \
|
||||||
|
./configure; \
|
||||||
|
fi
|
||||||
|
|
||||||
configure: configure.in
|
configure: configure.in
|
||||||
autoconf
|
autoconf
|
||||||
|
|
||||||
#
|
#
|
||||||
# End of "$Id: Makefile,v 1.12.2.6 2001/03/14 17:20:01 spitzak Exp $".
|
# End of "$Id: Makefile,v 1.12.2.6.2.1 2001/08/01 21:24:48 easysw Exp $".
|
||||||
#
|
#
|
||||||
|
4
README
4
README
@ -1,5 +1,5 @@
|
|||||||
README - Fast Light Tool Kit (FLTK) Version 1.0.11
|
README - Fast Light Tool Kit (FLTK) Version 1.1.0
|
||||||
--------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
WHAT IS FLTK?
|
WHAT IS FLTK?
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl.cxx,v 1.24.2.41 2001/02/26 00:19:02 spitzak Exp $"
|
// "$Id: Fl.cxx,v 1.24.2.41.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Main event handling code for the Fast Light Tool Kit (FLTK).
|
// Main event handling code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -605,6 +605,8 @@ int Fl::handle(int event, Fl_Window* window)
|
|||||||
|
|
||||||
void Fl_Window::hide() {
|
void Fl_Window::hide() {
|
||||||
clear_visible();
|
clear_visible();
|
||||||
|
Fl_Tooltip::exit(this);
|
||||||
|
|
||||||
if (!shown()) return;
|
if (!shown()) return;
|
||||||
|
|
||||||
// remove from the list of windows:
|
// remove from the list of windows:
|
||||||
@ -780,5 +782,5 @@ void Fl_Window::flush() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl.cxx,v 1.24.2.41 2001/02/26 00:19:02 spitzak Exp $".
|
// End of "$Id: Fl.cxx,v 1.24.2.41.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Button.cxx,v 1.4.2.6 2001/01/22 15:13:39 easysw Exp $"
|
// "$Id: Fl_Button.cxx,v 1.4.2.6.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Button widget for the Fast Light Tool Kit (FLTK).
|
// Button widget for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -26,6 +26,7 @@
|
|||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include <FL/Fl_Button.H>
|
#include <FL/Fl_Button.H>
|
||||||
#include <FL/Fl_Group.H>
|
#include <FL/Fl_Group.H>
|
||||||
|
#include <FL/Fl_Tooltip.H> // tooltip
|
||||||
|
|
||||||
// There are a lot of subclasses, named Fl_*_Button. Some of
|
// There are a lot of subclasses, named Fl_*_Button. Some of
|
||||||
// them are implemented by setting the type() value and testing it
|
// them are implemented by setting the type() value and testing it
|
||||||
@ -60,11 +61,15 @@ int Fl_Button::handle(int event) {
|
|||||||
int newval;
|
int newval;
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case FL_ENTER:
|
case FL_ENTER:
|
||||||
|
Fl_Tooltip::enter(this); // tooltip
|
||||||
|
return 1; // tooltip
|
||||||
case FL_LEAVE:
|
case FL_LEAVE:
|
||||||
// if ((value_?selection_color():color())==FL_GRAY) redraw();
|
// if ((value_?selection_color():color())==FL_GRAY) redraw();
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
return 1;
|
return 1;
|
||||||
case FL_PUSH:
|
case FL_PUSH:
|
||||||
case FL_DRAG:
|
case FL_DRAG:
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
if (Fl::event_inside(this)) {
|
if (Fl::event_inside(this)) {
|
||||||
if (type() == FL_RADIO_BUTTON) newval = 1;
|
if (type() == FL_RADIO_BUTTON) newval = 1;
|
||||||
else newval = !oldval;
|
else newval = !oldval;
|
||||||
@ -77,6 +82,7 @@ int Fl_Button::handle(int event) {
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
case FL_RELEASE:
|
case FL_RELEASE:
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
if (value_ == oldval) {
|
if (value_ == oldval) {
|
||||||
if (when() & FL_WHEN_NOT_CHANGED) do_callback();
|
if (when() & FL_WHEN_NOT_CHANGED) do_callback();
|
||||||
return 1;
|
return 1;
|
||||||
@ -118,5 +124,5 @@ Fl_Button::Fl_Button(int x,int y,int w,int h, const char *l)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Button.cxx,v 1.4.2.6 2001/01/22 15:13:39 easysw Exp $".
|
// End of "$Id: Fl_Button.cxx,v 1.4.2.6.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Group.cxx,v 1.8.2.8 2001/01/22 15:13:39 easysw Exp $"
|
// "$Id: Fl_Group.cxx,v 1.8.2.8.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Group widget for the Fast Light Tool Kit (FLTK).
|
// Group widget for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -33,6 +33,7 @@
|
|||||||
#include <FL/Fl_Window.H>
|
#include <FL/Fl_Window.H>
|
||||||
#include <FL/fl_draw.H>
|
#include <FL/fl_draw.H>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <FL/Fl_Tooltip.H> // tooltip
|
||||||
|
|
||||||
Fl_Group* Fl_Group::current_;
|
Fl_Group* Fl_Group::current_;
|
||||||
|
|
||||||
@ -120,9 +121,11 @@ int Fl_Group::handle(int event) {
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case FL_KEYBOARD:
|
case FL_KEYBOARD:
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
return navigation(navkey());
|
return navigation(navkey());
|
||||||
|
|
||||||
case FL_SHORTCUT:
|
case FL_SHORTCUT:
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
for (i = children(); i--;) {
|
for (i = children(); i--;) {
|
||||||
o = a[i];
|
o = a[i];
|
||||||
if (o->takesevents() && Fl::event_inside(o) && send(o,FL_SHORTCUT))
|
if (o->takesevents() && Fl::event_inside(o) && send(o,FL_SHORTCUT))
|
||||||
@ -137,6 +140,7 @@ int Fl_Group::handle(int event) {
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case FL_ENTER:
|
case FL_ENTER:
|
||||||
|
Fl_Tooltip::enter(this); // tooltip
|
||||||
case FL_MOVE:
|
case FL_MOVE:
|
||||||
for (i = children(); i--;) {
|
for (i = children(); i--;) {
|
||||||
o = a[i];
|
o = a[i];
|
||||||
@ -153,6 +157,7 @@ int Fl_Group::handle(int event) {
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case FL_PUSH:
|
case FL_PUSH:
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
for (i = children(); i--;) {
|
for (i = children(); i--;) {
|
||||||
o = a[i];
|
o = a[i];
|
||||||
if (o->takesevents() && Fl::event_inside(o)) {
|
if (o->takesevents() && Fl::event_inside(o)) {
|
||||||
@ -180,6 +185,9 @@ int Fl_Group::handle(int event) {
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
case FL_LEAVE: // tooltip
|
||||||
|
Fl_Tooltip::exit(this); // tooltip
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -270,12 +278,18 @@ void Fl_Group::clear() {
|
|||||||
for (int i=old_children; i--;) {
|
for (int i=old_children; i--;) {
|
||||||
Fl_Widget* o = *a++;
|
Fl_Widget* o = *a++;
|
||||||
// test the parent to see if child already destructed:
|
// test the parent to see if child already destructed:
|
||||||
if (o->parent() == this) delete o;
|
if (o->parent() == this) {
|
||||||
|
Fl_Tooltip::exit(o);
|
||||||
|
delete o;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (old_children > 1) free((void*)old_array);
|
if (old_children > 1) free((void*)old_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Group::~Fl_Group() {clear();}
|
Fl_Group::~Fl_Group() {
|
||||||
|
Fl_Tooltip::exit(this);
|
||||||
|
clear();
|
||||||
|
}
|
||||||
|
|
||||||
void Fl_Group::insert(Fl_Widget &o, int index) {
|
void Fl_Group::insert(Fl_Widget &o, int index) {
|
||||||
if (o.parent()) {
|
if (o.parent()) {
|
||||||
@ -513,5 +527,5 @@ void Fl_Group::draw_outside_label(const Fl_Widget& w) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Group.cxx,v 1.8.2.8 2001/01/22 15:13:39 easysw Exp $".
|
// End of "$Id: Fl_Group.cxx,v 1.8.2.8.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Tooltip.cxx,v 1.38 2001/07/23 09:50:05 spitzak Exp $"
|
// "$Id: Fl_Tooltip.cxx,v 1.38.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Tooltip code for the Fast Light Tool Kit (FLTK).
|
// Tooltip source file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-1999 by Bill Spitzak and others.
|
// Copyright 1998-2001 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software; you can redistribute it and/or
|
// This library is free software; you can redistribute it and/or
|
||||||
// modify it under the terms of the GNU Library General Public
|
// modify it under the terms of the GNU Library General Public
|
||||||
@ -20,138 +20,157 @@
|
|||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
// USA.
|
// USA.
|
||||||
//
|
//
|
||||||
// Please report all bugs and problems to "fltk-bugs@easysw.com".
|
// Please report all bugs and problems to "fltk-bugs@fltk.org".
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <fltk/Fl_Tooltip.h>
|
#include <FL/Fl.H>
|
||||||
#include <fltk/fl_draw.h>
|
#include <FL/Fl_Menu_Window.H>
|
||||||
#include <fltk/Fl_Menu_Window.h>
|
#include <FL/Fl_Box.H>
|
||||||
|
#include <FL/fl_draw.H>
|
||||||
|
|
||||||
float Fl_Tooltip::delay_ = 0.5f;
|
#include <stdio.h>
|
||||||
int Fl_Tooltip::enabled_ = 1;
|
|
||||||
|
|
||||||
#define MAX_WIDTH 400
|
//
|
||||||
|
// Fl_Tooltip global variables...
|
||||||
|
//
|
||||||
|
|
||||||
class Fl_TooltipBox : public Fl_Menu_Window {
|
void (*Fl_Tooltip::tooltip_callback_)(void *) = 0;
|
||||||
|
void (*Fl_Tooltip::tooltip_exit_)(void *) = 0;
|
||||||
|
float Fl_Tooltip::delay_ = 0.5;
|
||||||
|
Fl_TooltipBox *Fl_Tooltip::box = 0;
|
||||||
|
Fl_Menu_Window *Fl_Tooltip::window = 0;
|
||||||
|
Fl_Widget *Fl_Tooltip::widget = 0;
|
||||||
|
int Fl_Tooltip::shown = 0;
|
||||||
|
uchar Fl_Tooltip::color_ = FL_YELLOW;
|
||||||
|
int Fl_Tooltip::font_ = FL_HELVETICA;
|
||||||
|
int Fl_Tooltip::size_ = FL_NORMAL_SIZE;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Tooltip label class...
|
||||||
|
//
|
||||||
|
|
||||||
|
class Fl_TooltipBox : public Fl_Box {
|
||||||
public:
|
public:
|
||||||
Fl_TooltipBox() : Fl_Menu_Window(0, 0, 0, 0) {
|
|
||||||
style(Fl_Tooltip::default_style);}
|
Fl_TooltipBox() : Fl_Box(0,0,10,10) {
|
||||||
void draw();
|
color(Fl_Tooltip::color_);
|
||||||
void layout();
|
align(FL_ALIGN_CENTER);
|
||||||
|
box(FL_BORDER_BOX);
|
||||||
|
Fl_Tooltip::widget = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
~Fl_TooltipBox() { }
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
tooltip(0); // Just in case
|
||||||
|
|
||||||
|
if (!Fl_Tooltip::widget || !Fl_Tooltip::widget->tooltip())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Fl_Window *widgetWindow = Fl_Tooltip::widget->window();
|
||||||
|
|
||||||
|
if (!widgetWindow) {
|
||||||
|
printf("!widgetWindow\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ww, hh;
|
||||||
|
ww = 0;
|
||||||
|
|
||||||
|
labelfont(Fl_Tooltip::font_);
|
||||||
|
labelsize(Fl_Tooltip::size_);
|
||||||
|
color(Fl_Tooltip::color_);
|
||||||
|
|
||||||
|
fl_font(Fl_Tooltip::font_, Fl_Tooltip::size_);
|
||||||
|
|
||||||
|
fl_measure(Fl_Tooltip::widget->tooltip(), ww, hh);
|
||||||
|
label(Fl_Tooltip::widget->tooltip());
|
||||||
|
|
||||||
|
int ox =
|
||||||
|
widgetWindow->x_root() + Fl_Tooltip::widget->x() + Fl_Tooltip::widget->w()/2;
|
||||||
|
int oy =
|
||||||
|
widgetWindow->y_root() + Fl_Tooltip::widget->y() + Fl_Tooltip::widget->h() + 10;
|
||||||
|
|
||||||
|
if (ox >= Fl::w())
|
||||||
|
ox = Fl::w() - ww - 6;
|
||||||
|
if (oy >= Fl::h())
|
||||||
|
oy = widgetWindow->y_root() + Fl_Tooltip::widget->y() - hh - 6;
|
||||||
|
|
||||||
|
parent()->resize(ox, oy, ww+6, hh+6);
|
||||||
|
|
||||||
|
draw_box();
|
||||||
|
draw_label();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* tip;
|
|
||||||
static Fl_Widget* widget;
|
|
||||||
static Fl_TooltipBox *window = 0;
|
|
||||||
static int X,Y,W,H;
|
|
||||||
|
|
||||||
void Fl_TooltipBox::layout() {
|
// This function is called by widgets
|
||||||
fl_font(label_font(), label_size());
|
// when the pointer enters them
|
||||||
int ww, hh;
|
void
|
||||||
ww = MAX_WIDTH;
|
Fl_Tooltip::enter(Fl_Widget *w) {
|
||||||
fl_measure(tip, ww, hh, FL_ALIGN_LEFT|FL_ALIGN_WRAP|FL_ALIGN_INSIDE);
|
if (!tooltip_callback_ || !w || !w->tooltip()) return;
|
||||||
ww += 6; hh += 6;
|
Fl::add_timeout(delay_, tooltip_callback_, w);
|
||||||
|
|
||||||
// find position on the screen of the widget:
|
|
||||||
int ox = Fl::event_x_root()+5;
|
|
||||||
//int ox = X+W/2;
|
|
||||||
int oy = Y + H+2;
|
|
||||||
for (Fl_Widget* p = widget; p; p = p->parent()) {
|
|
||||||
//ox += p->x();
|
|
||||||
oy += p->y();
|
|
||||||
}
|
|
||||||
if (ox+ww > Fl::w()) ox = Fl::w() - ww;
|
|
||||||
if (ox < 0) ox = 0;
|
|
||||||
if (H > 30) {
|
|
||||||
oy = Fl::event_y_root()+13;
|
|
||||||
if (oy+hh > Fl::h()) oy -= 23+hh;
|
|
||||||
} else {
|
|
||||||
if (oy+hh > Fl::h()) oy -= (4+hh+H);
|
|
||||||
}
|
|
||||||
if (oy < 0) oy = 0;
|
|
||||||
|
|
||||||
resize(ox, oy, ww, hh);
|
|
||||||
Fl_Menu_Window::layout();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Fl_TooltipBox::draw() {
|
|
||||||
draw_box();
|
|
||||||
draw_label(3, 3, w()-6, h()-6, FL_ALIGN_LEFT|FL_ALIGN_WRAP|FL_ALIGN_INSIDE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void tooltip_timeout(void*) {
|
// This function must be called when
|
||||||
if (Fl::grab()) return;
|
// an event != FL_MOVE has occured in
|
||||||
|
// the widget
|
||||||
|
void
|
||||||
|
Fl_Tooltip::exit(Fl_Widget *w) {
|
||||||
|
if (tooltip_exit_ && w && w->tooltip()) tooltip_exit_(w);
|
||||||
|
}
|
||||||
|
|
||||||
if (window) delete window;
|
void
|
||||||
|
Fl_Tooltip::tooltip_exit(Fl_Widget *w) {
|
||||||
|
Fl::remove_timeout(tooltip_callback_, w);
|
||||||
|
if ((w == widget || (widget && w == widget->window())) && shown && window) {
|
||||||
|
widget = 0;
|
||||||
|
window->hide();
|
||||||
|
shown = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Fl_Tooltip::tooltip_timeout(void *v) {
|
||||||
|
if (!window) {
|
||||||
Fl_Group* saveCurrent = Fl_Group::current();
|
Fl_Group* saveCurrent = Fl_Group::current();
|
||||||
Fl_Group::current(0);
|
Fl_Group::current(0);
|
||||||
window = new Fl_TooltipBox;
|
window = new Fl_Menu_Window(0, 0, 10, 10, 0);
|
||||||
window->set_override();
|
window->clear_border();
|
||||||
|
window->box(FL_NO_BOX);
|
||||||
|
|
||||||
|
window->begin();
|
||||||
|
box = new Fl_TooltipBox;
|
||||||
|
box->color(FL_YELLOW);
|
||||||
|
box->align(FL_ALIGN_CENTER);
|
||||||
|
window->resizable(box);
|
||||||
window->end();
|
window->end();
|
||||||
Fl_Group::current(saveCurrent);
|
Fl_Group::current(saveCurrent);
|
||||||
|
|
||||||
// this cast bypasses the normal Fl_Window label() code:
|
|
||||||
((Fl_Widget*)window)->label(tip);
|
|
||||||
window->relayout();
|
|
||||||
window->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cheesy_flag = 0;
|
|
||||||
|
|
||||||
static void
|
|
||||||
tt_exit(Fl_Widget *w) {
|
|
||||||
if (!w || w != widget) return;
|
|
||||||
widget = 0;
|
|
||||||
Fl::remove_timeout((Fl_Timeout_Handler)tooltip_timeout);
|
|
||||||
if (window) {
|
|
||||||
// This flag makes sure that tootip_enter() isn't executed because of
|
|
||||||
// this destroy() which could cause unwanted recursion in tooltip_enter()
|
|
||||||
cheesy_flag = 1;
|
|
||||||
window->destroy();
|
|
||||||
cheesy_flag = 0;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
if (!v)
|
||||||
tt_enter_area(Fl_Widget* w, int X, int Y, int W, int H, const char* t) {
|
|
||||||
if (cheesy_flag) return;
|
|
||||||
if (w == widget && X == ::X && Y == ::Y && W == ::W && H == ::H && t == tip)
|
|
||||||
return;
|
return;
|
||||||
tt_exit(widget);
|
|
||||||
widget = w; ::X = X; ::Y = Y; ::W = W; ::H = H; tip = t;
|
|
||||||
if (!t || !Fl_Tooltip::enabled()) return;
|
|
||||||
float d = Fl_Tooltip::delay();
|
|
||||||
if (d < .01f) d = .01f;
|
|
||||||
Fl::add_timeout(d, (Fl_Timeout_Handler)tooltip_timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
if (shown && widget != (Fl_Widget *)v) {
|
||||||
tt_enter(Fl_Widget* w) {
|
tooltip_exit(widget);
|
||||||
if (cheesy_flag || w == widget) return;
|
}
|
||||||
if (!w || w == window) { tt_exit(widget); widget = 0; return; }
|
|
||||||
tt_enter_area(w, 0, 0, w->w(), w->h(), w->tooltip());
|
widget = (Fl_Widget*) v;
|
||||||
}
|
Fl_Window *widgetWindow = widget->window();
|
||||||
|
|
||||||
void Fl_Widget::tooltip(const char *tt) {
|
if (widgetWindow) {
|
||||||
static int do_once = 0;
|
Fl::grab(*widgetWindow);
|
||||||
if (!do_once) {
|
window->show();
|
||||||
do_once = 1;
|
Fl::release();
|
||||||
Fl_Tooltip::enter = tt_enter;
|
shown = 1;
|
||||||
Fl_Tooltip::enter_area = tt_enter_area;
|
} else {
|
||||||
Fl_Tooltip::exit = tt_exit;
|
widget = 0;
|
||||||
}
|
}
|
||||||
tooltip_ = tt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void revert(Fl_Style* s) {
|
|
||||||
s->box = FL_BORDER_BOX;
|
|
||||||
s->color = (Fl_Color)215;
|
|
||||||
s->label_color = FL_BLACK;
|
|
||||||
}
|
|
||||||
static Fl_Named_Style style("Tooltip", revert, &Fl_Tooltip::default_style);
|
|
||||||
Fl_Named_Style* Fl_Tooltip::default_style = &::style;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Tooltip.cxx,v 1.38 2001/07/23 09:50:05 spitzak Exp $".
|
// End of "$Id: Fl_Tooltip.cxx,v 1.38.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# "$Id: Makefile,v 1.18.2.14 2001/01/22 15:13:40 easysw Exp $"
|
# "$Id: Makefile,v 1.18.2.14.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
#
|
#
|
||||||
# Library makefile for the Fast Light Tool Kit (FLTK).
|
# Library makefile for the Fast Light Tool Kit (FLTK).
|
||||||
#
|
#
|
||||||
@ -71,6 +71,7 @@ CPPFILES = \
|
|||||||
Fl_Slider.cxx \
|
Fl_Slider.cxx \
|
||||||
Fl_Tabs.cxx \
|
Fl_Tabs.cxx \
|
||||||
Fl_Tile.cxx \
|
Fl_Tile.cxx \
|
||||||
|
Fl_Tooltip.cxx \
|
||||||
Fl_Valuator.cxx \
|
Fl_Valuator.cxx \
|
||||||
Fl_Value_Input.cxx \
|
Fl_Value_Input.cxx \
|
||||||
Fl_Value_Output.cxx \
|
Fl_Value_Output.cxx \
|
||||||
@ -207,5 +208,5 @@ install: $(LIBRARY) $(DSONAME)
|
|||||||
ln -s FL $(includedir)/Fl
|
ln -s FL $(includedir)/Fl
|
||||||
|
|
||||||
#
|
#
|
||||||
# End of "$Id: Makefile,v 1.18.2.14 2001/01/22 15:13:40 easysw Exp $".
|
# End of "$Id: Makefile,v 1.18.2.14.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
#
|
#
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: buttons.cxx,v 1.4.2.3 2001/01/22 15:13:41 easysw Exp $"
|
// "$Id: buttons.cxx,v 1.4.2.3.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Another button test program for the Fast Light Tool Kit (FLTK).
|
// Another button test program for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -33,10 +33,11 @@
|
|||||||
#include <FL/Fl_Check_Button.H>
|
#include <FL/Fl_Check_Button.H>
|
||||||
#include <FL/Fl_Light_Button.H>
|
#include <FL/Fl_Light_Button.H>
|
||||||
#include <FL/Fl_Round_Button.H>
|
#include <FL/Fl_Round_Button.H>
|
||||||
|
#include <FL/Fl_Tooltip.H>
|
||||||
|
|
||||||
int main(int argc, char ** argv) {
|
int main(int argc, char ** argv) {
|
||||||
Fl_Window *window = new Fl_Window(320,130);
|
Fl_Window *window = new Fl_Window(320,130);
|
||||||
new Fl_Button(10, 10, 130, 30, "Fl_Button");
|
(new Fl_Button(10, 10, 130, 30, "Fl_Button"))->tooltip("This is a Tooltip.");
|
||||||
new Fl_Return_Button(150, 10, 160, 30, "Fl_Return_Button");
|
new Fl_Return_Button(150, 10, 160, 30, "Fl_Return_Button");
|
||||||
new Fl_Repeat_Button(10,50,130,30,"Fl_Repeat_Button");
|
new Fl_Repeat_Button(10,50,130,30,"Fl_Repeat_Button");
|
||||||
new Fl_Light_Button(10,90,130,30,"Fl_Light_Button");
|
new Fl_Light_Button(10,90,130,30,"Fl_Light_Button");
|
||||||
@ -48,5 +49,5 @@ int main(int argc, char ** argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: buttons.cxx,v 1.4.2.3 2001/01/22 15:13:41 easysw Exp $".
|
// End of "$Id: buttons.cxx,v 1.4.2.3.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: demo.cxx,v 1.8.2.5 2001/01/22 15:13:41 easysw Exp $"
|
// "$Id: demo.cxx,v 1.8.2.5.2.1 2001/08/01 21:24:49 easysw Exp $"
|
||||||
//
|
//
|
||||||
// Main demo program for the Fast Light Tool Kit (FLTK).
|
// Main demo program for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@ -173,6 +173,8 @@ void push_menu(const char* nnn)
|
|||||||
bn = numb2but(i,n-1);
|
bn = numb2but(i,n-1);
|
||||||
but[bn]->show();
|
but[bn]->show();
|
||||||
but[bn]->label(menus[men].iname[i]);
|
but[bn]->label(menus[men].iname[i]);
|
||||||
|
if (menus[men].icommand[i][0] != '@') but[bn]->tooltip(menus[men].icommand[i]);
|
||||||
|
else but[bn]->tooltip(0);
|
||||||
}
|
}
|
||||||
strcpy(stack[stsize],nnn);
|
strcpy(stack[stsize],nnn);
|
||||||
stsize++;
|
stsize++;
|
||||||
@ -332,6 +334,6 @@ int main(int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: demo.cxx,v 1.8.2.5 2001/01/22 15:13:41 easysw Exp $".
|
// End of "$Id: demo.cxx,v 1.8.2.5.2.1 2001/08/01 21:24:49 easysw Exp $".
|
||||||
//
|
//
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user