Include a stripped-down version of FLTK in tree and add a USE_INCLUDED_FLTK option to build against it.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4603 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/fltk/FL/Fl_Button.H b/common/fltk/FL/Fl_Button.H
new file mode 100644
index 0000000..39050dc
--- /dev/null
+++ b/common/fltk/FL/Fl_Button.H
@@ -0,0 +1,180 @@
+//
+// "$Id: Fl_Button.H 7903 2010-11-28 21:06:39Z matt $"
+//
+// Button header file for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 1998-2010 by Bill Spitzak and others.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+/* \file
+ Fl_Button widget . */
+
+#ifndef Fl_Button_H
+#define Fl_Button_H
+
+#ifndef Fl_Widget_H
+#include "Fl_Widget.H"
+#endif
+
+// values for type()
+#define FL_NORMAL_BUTTON 0 /**< value() will be set to 1 during the press of the button and
+ reverts back to 0 when the button is released */
+#define FL_TOGGLE_BUTTON 1 ///< value() toggles between 0 and 1 at every click of the button
+#define FL_RADIO_BUTTON (FL_RESERVED_TYPE+2) /**< is set to 1 at button press, and all other
+ buttons in the same group with <tt>type() == FL_RADIO_BUTTON</tt>
+ are set to zero.*/
+#define FL_HIDDEN_BUTTON 3 ///< for Forms compatibility
+
+extern FL_EXPORT Fl_Shortcut fl_old_shortcut(const char*);
+
+class Fl_Widget_Tracker;
+
+/**
+ \class Fl_Button
+ \brief Buttons generate callbacks when they are clicked by the user.
+
+ You control exactly when and how by changing the values for type() and
+ when(). Buttons can also generate callbacks in response to \c FL_SHORTCUT
+ events. The button can either have an explicit shortcut(int s) value or a
+ letter shortcut can be indicated in the label() with an '\&' character
+ before it. For the label shortcut it does not matter if \e Alt is held
+ down, but if you have an input field in the same window, the user will have
+ to hold down the \e Alt key so that the input field does not eat the event
+ first as an \c FL_KEYBOARD event.
+
+ \todo Refactor the doxygen comments for Fl_Button type() documentation.
+
+ For an Fl_Button object, the type() call returns one of:
+ \li \c FL_NORMAL_BUTTON (0): value() remains unchanged after button press.
+ \li \c FL_TOGGLE_BUTTON: value() is inverted after button press.
+ \li \c FL_RADIO_BUTTON: value() is set to 1 after button press, and all other
+ buttons in the current group with <tt>type() == FL_RADIO_BUTTON</tt>
+ are set to zero.
+
+ \todo Refactor the doxygen comments for Fl_Button when() documentation.
+
+ For an Fl_Button object, the following when() values are useful, the default
+ being \c FL_WHEN_RELEASE:
+ \li \c 0: The callback is not done, instead changed() is turned on.
+ \li \c FL_WHEN_RELEASE: The callback is done after the user successfully
+ clicks the button, or when a shortcut is typed.
+ \li \c FL_WHEN_CHANGED: The callback is done each time the value() changes
+ (when the user pushes and releases the button, and as the mouse is
+ dragged around in and out of the button).
+*/
+class FL_EXPORT Fl_Button : public Fl_Widget {
+
+ int shortcut_;
+ char value_;
+ char oldval;
+ uchar down_box_;
+
+protected:
+
+ static Fl_Widget_Tracker *key_release_tracker;
+ static void key_release_timeout(void*);
+ void simulate_key_action();
+
+ virtual void draw();
+
+public:
+
+ virtual int handle(int);
+
+ Fl_Button(int X, int Y, int W, int H, const char *L = 0);
+
+ int value(int v);
+
+ /**
+ Returns the current value of the button (0 or 1).
+ */
+ char value() const {return value_;}
+
+ /**
+ Same as \c value(1).
+ \see value(int v)
+ */
+ int set() {return value(1);}
+
+ /**
+ Same as \c value(0).
+ \see value(int v)
+ */
+ int clear() {return value(0);}
+
+ void setonly(); // this should only be called on FL_RADIO_BUTTONs
+
+ /**
+ Returns the current shortcut key for the button.
+ \retval int
+ */
+ int shortcut() const {return shortcut_;}
+
+ /**
+ Sets the shortcut key to \c s.
+ Setting this overrides the use of '\&' in the label().
+ The value is a bitwise OR of a key and a set of shift flags, for example:
+ <tt>FL_ALT | 'a'</tt>, or
+ <tt>FL_ALT | (FL_F + 10)</tt>, or just
+ <tt>'a'</tt>.
+ A value of 0 disables the shortcut.
+
+ The key can be any value returned by Fl::event_key(), but will usually be
+ an ASCII letter. Use a lower-case letter unless you require the shift key
+ to be held down.
+
+ The shift flags can be any set of values accepted by Fl::event_state().
+ If the bit is on, that shift key must be pushed. Meta, Alt, Ctrl, and
+ Shift must be off if they are not in the shift flags (zero for the other
+ bits indicates a "don't care" setting).
+ \param[in] s bitwise OR of key and shift flags
+ */
+ void shortcut(int s) {shortcut_ = s;}
+
+ /**
+ Returns the current down box type, which is drawn when value() is non-zero.
+ \retval Fl_Boxtype
+ */
+ Fl_Boxtype down_box() const {return (Fl_Boxtype)down_box_;}
+
+ /**
+ Sets the down box type. The default value of 0 causes FLTK to figure out
+ the correct matching down version of box().
+ \param[in] b down box type
+ */
+ void down_box(Fl_Boxtype b) {down_box_ = b;}
+
+ /// (for backwards compatibility)
+ void shortcut(const char *s) {shortcut(fl_old_shortcut(s));}
+
+ /// (for backwards compatibility)
+ Fl_Color down_color() const {return selection_color();}
+
+ /// (for backwards compatibility)
+ void down_color(unsigned c) {selection_color(c);}
+};
+
+#endif
+
+//
+// End of "$Id: Fl_Button.H 7903 2010-11-28 21:06:39Z matt $".
+//