FLTK 1.4.0
Fl_Flex Class Reference

Fl_Flex is a container (layout) widget for one row or one column of widgets. More...

#include <Fl_Flex.H>

Inheritance diagram for Fl_Flex:
Fl_Group Fl_Widget

Public Types

enum  { VERTICAL = 0 , HORIZONTAL = 1 , COLUMN = 0 , ROW = 1 }
 

Public Member Functions

virtual void end ()
 Ends automatic child addition and resizes all children. More...
 
void fixed (Fl_Widget &w, int size)
 Set the horizontal or vertical size of a child widget. More...
 
int fixed (Fl_Widget *w) const
 Return whether the given widget has a fixed size or resizes dynamically. More...
 
void fixed (Fl_Widget *w, int size)
 Set the horizontal or vertical size of a child widget. More...
 
 Fl_Flex (int direction)
 Construct a new Fl_Flex widget specifying its layout. More...
 
 Fl_Flex (int w, int h, int direction)
 Construct a new Fl_Flex widget specifying its layout and size. More...
 
 Fl_Flex (int X, int Y, int W, int H, const char *L=0)
 Construct a new Fl_Flex widget with the given position, size, and label. More...
 
 Fl_Flex (int x, int y, int w, int h, int direction)
 Construct a new Fl_Flex widget specifying its layout, position, and size. More...
 
int gap () const
 Return the gap size of the widget. More...
 
void gap (int g)
 Set the gap size of the widget. More...
 
int horizontal () const
 Returns non-zero (true) if Fl_Flex alignment is horizontal (row mode). More...
 
void layout ()
 Calculates the layout of the widget and redraws it. More...
 
int margin () const
 Returns the left margin size of the widget. More...
 
int margin (int *left, int *top, int *right, int *bottom) const
 Returns all (four) margin sizes of the widget. More...
 
void margin (int left, int top, int right, int bottom)
 Set the margin sizes at all four edges of the Fl_Flex widget. More...
 
void margin (int m, int g=-1)
 Set the margin and optionally the gap size of the widget. More...
 
bool need_layout () const
 Returns whether layout calculation is required. More...
 
void need_layout (int set)
 Set or reset the request to calculate the layout of children. More...
 
void resize (int x, int y, int w, int h) FL_OVERRIDE
 Resize the container and calculate all child positions and sizes. More...
 
int spacing () const
 Gets the number of extra pixels of blank space that are added between the children. More...
 
void spacing (int i)
 Sets the number of extra pixels of blank space that are added between the children. More...
 
- Public Member Functions inherited from Fl_Group
Fl_Widget *& _ddfdesign_kludge ()
 This is for forms compatibility only.
 
void add (Fl_Widget &)
 The widget is removed from its current group (if any) and then added to the end of this group.
 
void add (Fl_Widget *o)
 See void Fl_Group::add(Fl_Widget &w)
 
void add_resizable (Fl_Widget &o)
 Adds a widget to the group and makes it the resizable widget.
 
Fl_Widget *const * array () const
 Returns a pointer to the array of children. More...
 
Fl_Group const * as_group () const FL_OVERRIDE
 
Fl_Groupas_group () FL_OVERRIDE
 Returns an Fl_Group pointer if this widget is an Fl_Group. More...
 
void begin ()
 Sets the current group so you can build the widget tree by just constructing the widgets. More...
 
Fl_Widgetchild (int n) const
 Returns array()[n]. More...
 
int children () const
 Returns how many child widgets the group has.
 
void clear ()
 Deletes all child widgets from memory recursively. More...
 
unsigned int clip_children ()
 Returns the current clipping mode. More...
 
void clip_children (int c)
 Controls whether the group widget clips the drawing of child widgets to its bounding box. More...
 
virtual int delete_child (int n)
 Removes the widget at index from the group and deletes it. More...
 
void end ()
 Exactly the same as current(this->parent()). More...
 
int find (const Fl_Widget &o) const
 See int Fl_Group::find(const Fl_Widget *w) const.
 
int find (const Fl_Widget *) const
 Searches the child array for the widget and returns the index. More...
 
 Fl_Group (int, int, int, int, const char *=0)
 Creates a new Fl_Group widget using the given position, size, and label string. More...
 
void focus (Fl_Widget *W)
 
void forms_end ()
 This is for forms compatibility only.
 
int handle (int) FL_OVERRIDE
 Handles the specified event. More...
 
void init_sizes ()
 Resets the internal array of widget sizes and positions. More...
 
void insert (Fl_Widget &, int i)
 The widget is removed from its current group (if any) and then inserted into this group. More...
 
void insert (Fl_Widget &o, Fl_Widget *before)
 This does insert(w, find(before)). More...
 
void remove (Fl_Widget &)
 Removes a widget from the group but does not delete it. More...
 
void remove (Fl_Widget *o)
 Removes the widget o from the group. More...
 
void remove (int index)
 Removes the widget at index from the group but does not delete it. More...
 
Fl_Widgetresizable () const
 Returns the group's resizable widget. More...
 
void resizable (Fl_Widget &o)
 Sets the group's resizable widget. More...
 
void resizable (Fl_Widget *o)
 The resizable widget defines both the resizing box and the resizing behavior of the group and its children. More...
 
void resize (int, int, int, int) FL_OVERRIDE
 Resizes the Fl_Group widget and all of its children. More...
 
virtual ~Fl_Group ()
 The destructor also deletes all the children. More...
 
- Public Member Functions inherited from Fl_Widget
void _clear_fullscreen ()
 
void _set_fullscreen ()
 
void activate ()
 Activates the widget. More...
 
unsigned int active () const
 Returns whether the widget is active. More...
 
int active_r () const
 Returns whether the widget and all of its parents are active. More...
 
Fl_Align align () const
 Gets the label alignment. More...
 
void align (Fl_Align alignment)
 Sets the label alignment. More...
 
long argument () const
 Gets the current user data (long) argument that is passed to the callback function. More...
 
void argument (long v)
 Sets the current user data (long) argument that is passed to the callback function. More...
 
virtual class Fl_Gl_Windowas_gl_window ()
 Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window. More...
 
virtual class Fl_Gl_Window const * as_gl_window () const
 
virtual Fl_Groupas_group ()
 Returns an Fl_Group pointer if this widget is an Fl_Group. More...
 
virtual Fl_Group const * as_group () const
 
virtual Fl_Windowas_window ()
 Returns an Fl_Window pointer if this widget is an Fl_Window. More...
 
virtual Fl_Window const * as_window () const
 
void bind_deimage (Fl_Image *img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
void bind_deimage (int f)
 Bind the inactive image to the widget, so the widget will delete the image when it is no longer needed. More...
 
void bind_image (Fl_Image *img)
 Sets the image to use as part of the widget label when in the active state. More...
 
void bind_image (int f)
 Bind the image to the widget, so the widget will delete the image when it is no longer needed. More...
 
Fl_Boxtype box () const
 Gets the box type of the widget. More...
 
void box (Fl_Boxtype new_box)
 Sets the box type for the widget. More...
 
Fl_Callback_p callback () const
 Gets the current callback function for the widget. More...
 
void callback (Fl_Callback *cb)
 Sets the current callback function for the widget. More...
 
void callback (Fl_Callback *cb, Fl_Callback_User_Data *p, bool auto_free)
 Sets the current callback function and managed user data for the widget. More...
 
void callback (Fl_Callback *cb, void *p)
 Sets the current callback function and data for the widget. More...
 
void callback (Fl_Callback0 *cb)
 Sets the current callback function for the widget. More...
 
void callback (Fl_Callback1 *cb, long p=0)
 Sets the current callback function for the widget. More...
 
unsigned int changed () const
 Checks if the widget value changed since the last callback. More...
 
void clear_active ()
 Marks the widget as inactive without sending events or changing focus. More...
 
void clear_changed ()
 Marks the value of the widget as unchanged. More...
 
void clear_damage (uchar c=0)
 Clears or sets the damage flags. More...
 
void clear_output ()
 Sets a widget to accept input. More...
 
void clear_visible ()
 Hides the widget. More...
 
void clear_visible_focus ()
 Disables keyboard focus navigation with this widget. More...
 
Fl_Color color () const
 Gets the background color of the widget. More...
 
void color (Fl_Color bg)
 Sets the background color of the widget. More...
 
void color (Fl_Color bg, Fl_Color sel)
 Sets the background and selection color of the widget. More...
 
Fl_Color color2 () const
 For back compatibility only. More...
 
void color2 (unsigned a)
 For back compatibility only. More...
 
int contains (const Fl_Widget *w) const
 Checks if w is a child of this widget. More...
 
void copy_label (const char *new_label)
 Sets the current label. More...
 
void copy_tooltip (const char *text)
 Sets the current tooltip text. More...
 
uchar damage () const
 Returns non-zero if draw() needs to be called. More...
 
void damage (uchar c)
 Sets the damage bits for the widget. More...
 
void damage (uchar c, int x, int y, int w, int h)
 Sets the damage bits for an area inside the widget. More...
 
int damage_resize (int, int, int, int)
 Internal use only.
 
void deactivate ()
 Deactivates the widget. More...
 
Fl_Imagedeimage ()
 Gets the image that is used as part of the widget label when in the inactive state. More...
 
const Fl_Imagedeimage () const
 Gets the image that is used as part of the widget label when in the inactive state. More...
 
void deimage (Fl_Image &img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
void deimage (Fl_Image *img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
int deimage_bound () const
 Returns whether the inactive image is managed by the widget. More...
 
void do_callback (Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with default arguments. More...
 
void do_callback (Fl_Widget *widget, long arg, Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with arbitrary arguments. More...
 
void do_callback (Fl_Widget *widget, void *arg=0, Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with arbitrary arguments. More...
 
virtual void draw ()=0
 Draws the widget. More...
 
void draw_label (int, int, int, int, Fl_Align) const
 Draws the label in an arbitrary bounding box with an arbitrary alignment. More...
 
int h () const
 Gets the widget height. More...
 
virtual int handle (int event)
 Handles the specified event. More...
 
virtual void hide ()
 Makes a widget invisible. More...
 
Fl_Imageimage ()
 Gets the image that is used as part of the widget label when in the active state. More...
 
const Fl_Imageimage () const
 Gets the image that is used as part of the widget label when in the active state. More...
 
void image (Fl_Image &img)
 Sets the image to use as part of the widget label when in the active state. More...
 
void image (Fl_Image *img)
 Sets the image to use as part of the widget label when in the active state. More...
 
int image_bound () const
 Returns whether the image is managed by the widget. More...
 
int inside (const Fl_Widget *wgt) const
 Checks if this widget is a child of wgt. More...
 
int is_label_copied () const
 Returns whether the current label was assigned with copy_label(). More...
 
const char * label () const
 Gets the current label text. More...
 
void label (const char *text)
 Sets the current label pointer. More...
 
void label (Fl_Labeltype a, const char *b)
 Shortcut to set the label text and type in one call. More...
 
Fl_Color labelcolor () const
 Gets the label color. More...
 
void labelcolor (Fl_Color c)
 Sets the label color. More...
 
Fl_Font labelfont () const
 Gets the font to use. More...
 
void labelfont (Fl_Font f)
 Sets the font to use. More...
 
Fl_Fontsize labelsize () const
 Gets the font size in pixels. More...
 
void labelsize (Fl_Fontsize pix)
 Sets the font size in pixels. More...
 
Fl_Labeltype labeltype () const
 Gets the label type. More...
 
void labeltype (Fl_Labeltype a)
 Sets the label type. More...
 
void measure_label (int &ww, int &hh) const
 Sets width ww and height hh accordingly with the label size. More...
 
bool needs_keyboard () const
 Returns whether this widget needs a keyboard. More...
 
void needs_keyboard (bool needs)
 Sets whether this widget needs a keyboard. More...
 
unsigned int output () const
 Returns if a widget is used for output only. More...
 
Fl_Groupparent () const
 Returns a pointer to the parent widget. More...
 
void parent (Fl_Group *p)
 Internal use only - "for hacks only". More...
 
void position (int X, int Y)
 Repositions the window or widget. More...
 
void redraw ()
 Schedules the drawing of the widget. More...
 
void redraw_label ()
 Schedules the drawing of the label. More...
 
virtual void resize (int x, int y, int w, int h)
 Changes the size or position of the widget. More...
 
Fl_Color selection_color () const
 Gets the selection color. More...
 
void selection_color (Fl_Color a)
 Sets the selection color. More...
 
void set_active ()
 Marks the widget as active without sending events or changing focus. More...
 
void set_changed ()
 Marks the value of the widget as changed. More...
 
void set_output ()
 Sets a widget to output only. More...
 
void set_visible ()
 Makes the widget visible. More...
 
void set_visible_focus ()
 Enables keyboard focus navigation with this widget. More...
 
int shortcut_label () const
 Returns whether the widget's label uses '&' to indicate shortcuts. More...
 
void shortcut_label (int value)
 Sets whether the widget's label uses '&' to indicate shortcuts. More...
 
virtual void show ()
 Makes a widget visible. More...
 
void size (int W, int H)
 Changes the size of the widget. More...
 
int take_focus ()
 Gives the widget the keyboard focus. More...
 
unsigned int takesevents () const
 Returns if the widget is able to take events. More...
 
int test_shortcut ()
 Returns true if the widget's label contains the entered '&x' shortcut. More...
 
const char * tooltip () const
 Gets the current tooltip text. More...
 
void tooltip (const char *text)
 Sets the current tooltip text. More...
 
Fl_Windowtop_window () const
 Returns a pointer to the top-level window for the widget. More...
 
Fl_Windowtop_window_offset (int &xoff, int &yoff) const
 Finds the x/y offset of the current widget relative to the top-level window. More...
 
uchar type () const
 Gets the widget type. More...
 
void type (uchar t)
 Sets the widget type. More...
 
int use_accents_menu ()
 Returns non zero if MAC_USE_ACCENTS_MENU flag is set, 0 otherwise.
 
void * user_data () const
 Gets the user data for this widget. More...
 
void user_data (Fl_Callback_User_Data *v, bool auto_free)
 Sets the user data for this widget.
 
void user_data (void *v)
 Sets the user data for this widget.
 
unsigned int visible () const
 Returns whether a widget is visible. More...
 
unsigned int visible_focus () const
 Checks whether this widget has a visible focus. More...
 
void visible_focus (int v)
 Modifies keyboard focus navigation. More...
 
int visible_r () const
 Returns whether a widget and all its parents are visible. More...
 
int w () const
 Gets the widget width. More...
 
Fl_When when () const
 Returns the conditions under which the callback is called. More...
 
void when (uchar i)
 Sets the flags used to decide when a callback is called. More...
 
Fl_Windowwindow () const
 Returns a pointer to the nearest parent window up the widget hierarchy. More...
 
int x () const
 Gets the widget position in its window. More...
 
int y () const
 Gets the widget position in its window. More...
 
virtual ~Fl_Widget ()
 Destroys the widget. More...
 

Protected Member Functions

virtual int alloc_size (int size) const
 Return new size to be allocated for array of fixed size widgets. More...
 
void draw () FL_OVERRIDE
 Draw the widget. More...
 
void init (int t=VERTICAL)
 
void on_remove (int) FL_OVERRIDE
 Allow derived groups to act when a child widget is removed from the group. More...
 
- Protected Member Functions inherited from Fl_Group
Fl_Rectbounds ()
 Returns the internal array of widget sizes and positions. More...
 
void draw () FL_OVERRIDE
 Draws the widget. More...
 
void draw_child (Fl_Widget &widget) const
 Forces a child to redraw. More...
 
void draw_children ()
 Draws all children of the group. More...
 
void draw_outside_label (const Fl_Widget &widget) const
 Parents normally call this to draw outside labels of child widgets.
 
virtual int on_insert (Fl_Widget *, int)
 Allow derived groups to act when a widget is added as a child. More...
 
virtual int on_move (int, int)
 Allow derived groups to act when a widget is moved within the group. More...
 
virtual void on_remove (int)
 Allow derived groups to act when a child widget is removed from the group. More...
 
int * sizes ()
 Returns the internal array of widget sizes and positions. More...
 
void update_child (Fl_Widget &widget) const
 Draws a child only if it needs it. More...
 
- Protected Member Functions inherited from Fl_Widget
void clear_flag (unsigned int c)
 Clears a flag in the flags mask.
 
void draw_backdrop () const
 If FL_ALIGN_IMAGE_BACKDROP is set, the image or deimage will be drawn.
 
void draw_box () const
 Draws the widget box according its box style.
 
void draw_box (Fl_Boxtype t, Fl_Color c) const
 Draws a box of type t, of color c at the widget's position and size.
 
void draw_box (Fl_Boxtype t, int x, int y, int w, int h, Fl_Color c) const
 Draws a box of type t, of color c at the position X,Y and size W,H.
 
void draw_focus () const
 Draws a focus rectangle around the widget. More...
 
void draw_focus (Fl_Boxtype t, int X, int Y, int W, int H) const
 Draws a focus rectangle around the widget. More...
 
void draw_focus (Fl_Boxtype t, int x, int y, int w, int h, Fl_Color bg) const
 Draws a focus box for the widget at the given position and size. More...
 
void draw_label () const
 Draws the widget's label at the defined label position. More...
 
void draw_label (int, int, int, int) const
 Draws the label in an arbitrary bounding box. More...
 
 Fl_Widget (int x, int y, int w, int h, const char *label=0L)
 Creates a widget at the given position and size. More...
 
unsigned int flags () const
 Gets the widget flags mask.
 
void h (int v)
 Internal use only. More...
 
void set_flag (unsigned int c)
 Sets a flag in the flags mask.
 
void w (int v)
 Internal use only. More...
 
void x (int v)
 Internal use only. More...
 
void y (int v)
 Internal use only. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Fl_Group
static Fl_Groupcurrent ()
 Returns the currently active group. More...
 
static void current (Fl_Group *g)
 Sets the current group. More...
 
- Static Public Member Functions inherited from Fl_Widget
static void default_callback (Fl_Widget *widget, void *data)
 The default callback for all widgets that don't set a callback. More...
 
static unsigned int label_shortcut (const char *t)
 Returns the Unicode value of the '&x' shortcut in a given text. More...
 
static int test_shortcut (const char *, const bool require_alt=false)
 Returns true if the given text t contains the entered '&x' shortcut. More...
 
- Protected Types inherited from Fl_Widget
enum  {
  INACTIVE = 1<<0 , INVISIBLE = 1<<1 , OUTPUT = 1<<2 , NOBORDER = 1<<3 ,
  FORCE_POSITION = 1<<4 , NON_MODAL = 1<<5 , SHORTCUT_LABEL = 1<<6 , CHANGED = 1<<7 ,
  OVERRIDE = 1<<8 , VISIBLE_FOCUS = 1<<9 , COPIED_LABEL = 1<<10 , CLIP_CHILDREN = 1<<11 ,
  MENU_WINDOW = 1<<12 , TOOLTIP_WINDOW = 1<<13 , MODAL = 1<<14 , NO_OVERLAY = 1<<15 ,
  GROUP_RELATIVE = 1<<16 , COPIED_TOOLTIP = 1<<17 , FULLSCREEN = 1<<18 , MAC_USE_ACCENTS_MENU = 1<<19 ,
  NEEDS_KEYBOARD = 1<<20 , IMAGE_BOUND = 1<<21 , DEIMAGE_BOUND = 1<<22 , AUTO_DELETE_USER_DATA = 1<<23 ,
  MAXIMIZED = 1<<24 , POPUP = 1<<25 , USERFLAG3 = 1<<29 , USERFLAG2 = 1<<30 ,
  USERFLAG1 = 1<<31
}
 flags possible values enumeration. More...
 

Detailed Description

Fl_Flex is a container (layout) widget for one row or one column of widgets.

It provides flexible positioning of its children either in one row or in one column.

Fl_Flex is designed to be as simple as possible. You can set individual widget sizes or let Fl_Flex position and size the widgets to fit in the container. All "flexible" (i.e. non-fixed size) widgets are assigned the same width or height, respectively. For details see below.

You can set the margins around all children at the inner side of the box frame (if any). Fl_Flex supports setting different margin sizes on top, bottom, left, and right sides. The default margin size is 0 on all edges of the container.

You can set the gap size between all children. The gap size is always the same between all of its children. This is similar to the 'spacing' of Fl_Pack. The default gap size is 0.

Fl_Flex can either consist of a single row, i.e. type(Fl_Flex::HORIZONTAL) or a single column, i.e. type(Fl_Flex::VERTICAL). The default value is Fl_Flex::VERTICAL for consistency with Fl_Pack but you can use type() to assign a row (Fl_Flex::HORIZONTAL) layout.

If type() == Fl_Flex::HORIZONTAL widgets are resized horizontally to fit in the container and their height is the full Fl_Flex height minus border size and margins. You can set a fixed widget width by using fixed().

If type() == Fl_Flex::VERTICAL widgets are resized vertically to fit in the container and their width is the full Fl_Flex width minus border size and margins. You can set a fixed widget height by using fixed().

To create arbitrary spacing you can use invisible boxes of flexible or fixed sizes (see example below).

Alternate constructors let you specify the layout as Fl_Flex::HORIZONTAL or Fl_Flex::VERTICAL directly. Fl_Flex::ROW is an alias of Fl_Flex::HORIZONTAL and Fl_Flex::COLUMN is an alias of Fl_Flex::VERTICAL.

The default box type is FL_NO_BOX as inherited from Fl_Group. You may need to set a box type with a solid background depending on your layout.

Important: You should always make sure that the Fl_Flex container cannot be resized smaller than its designed minimal size. This can usually be done by setting a size_range() on the window as shown in the example below. Fl_Flex does not take care of sensible sizes. If it is resized too small the behavior is undefined, i.e. widgets may overlap and/or shrink to zero size.

Hint: In many cases Fl_Flex can be used as a drop-in replacement for Fl_Pack. This is the recommended single row/column container since FLTK 1.4.0. Its resizing behavior is much more predictable (as expected) than that of Fl_Pack which "resizes itself to shrink-wrap itself around all of the children".

Fl_Flex containers can be nested so you can create flexible layouts with multiple columns and rows. However, if your UI design is more complex you may want to use Fl_Grid instead.

Example:

Example code:

#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Flex.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
int main(int argc, char **argv) {
Fl_Double_Window window(410, 40, "Simple Fl_Flex Demo");
Fl_Flex flex(5, 5, 400, 30, Fl_Flex::HORIZONTAL);
Fl_Button b1(0, 0, 0, 0, "File");
Fl_Button b2(0, 0, 0, 0, "Save");
Fl_Box bx(0, 0, 0, 0);
Fl_Button b3(0, 0, 0, 0, "Exit");
flex.fixed(bx, 60); // set fix width of invisible box
flex.gap(10);
flex.end();
window.size_range(300, 30);
window.show(argc, argv);
return Fl::run();
}
Fl static class.
Fl_Box widget.
This widget simply draws its box, and possibly its label.
Definition: Fl_Box.H:33
Buttons generate callbacks when they are clicked by the user.
Definition: Fl_Button.H:76
The Fl_Double_Window provides a double-buffered window.
Definition: Fl_Double_Window.H:31
Fl_Flex is a container (layout) widget for one row or one column of widgets.
Definition: Fl_Flex.H:114
@ HORIZONTAL
horizontal layout (one row)
Definition: Fl_Flex.H:130
void end()
Exactly the same as current(this->parent()).
Definition: Fl_Group.cxx:73
void resizable(Fl_Widget &o)
Sets the group's resizable widget.
Definition: Fl_Group.H:144
Fl_Window * window() const
Returns a pointer to the nearest parent window up the widget hierarchy.
Definition: Fl_Window.cxx:107
void size_range(int minw, int minh, int maxw=0, int maxh=0, int dw=0, int dh=0, int aspect=0)
Sets the allowable range the user can resize this window to.
Definition: Fl_Window.cxx:665
void show() FL_OVERRIDE
Puts the window on the screen.
Definition: Fl_Window.cxx:545
static int run()
Calls Fl::wait()repeatedly as long as any windows are displayed.
Definition: Fl.cxx:604
Since
1.4.0

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
VERTICAL 

vertical layout (one column)

HORIZONTAL 

horizontal layout (one row)

COLUMN 

alias for VERTICAL

ROW 

alias for HORIZONTAL

Constructor & Destructor Documentation

◆ Fl_Flex() [1/4]

Fl_Flex::Fl_Flex ( int  X,
int  Y,
int  W,
int  H,
const char *  L = 0 
)

Construct a new Fl_Flex widget with the given position, size, and label.

You can set type(Fl_Flex::HORIZONTAL) or type(Fl_Flex::VERTICAL). The default is type(Fl_Flex::VERTICAL).

Alternate constructors let you specify the layout as Fl_Flex::HORIZONTAL or Fl_Flex::VERTICAL directly. Fl_Flex::ROW is an alias of Fl_Flex::HORIZONTAL and Fl_Flex::COLUMN is an alias of Fl_Flex::VERTICAL.

Parameters
[in]X,Yposition
[in]W,Hsize (width and height)
[in]Llabel (optional)
See also
Fl_Flex::Fl_Flex(int direction)
Fl_Flex::Fl_Flex(int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, const char *L)

◆ Fl_Flex() [2/4]

Fl_Flex::Fl_Flex ( int  direction)

Construct a new Fl_Flex widget specifying its layout.

Use Fl_Flex::HORIZONTAL (aka Fl_Flex::ROW) or Fl_Flex::VERTICAL (aka Fl_Flex::COLUMN) as the direction argument.

This constructor sets the position and size to (0, 0, 0, 0) which is suitable for nested Fl_Flex widgets. Use one of the other constructors to set the desired position and size as well.

Parameters
[in]directionhorizontal (row) or vertical (column) layout
See also
Fl_Flex::Fl_Flex(int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, const char *L)

◆ Fl_Flex() [3/4]

Fl_Flex::Fl_Flex ( int  w,
int  h,
int  direction 
)

Construct a new Fl_Flex widget specifying its layout and size.

Use Fl_Flex::HORIZONTAL (aka Fl_Flex::ROW) or Fl_Flex::VERTICAL (aka Fl_Flex::COLUMN) as the direction argument.

This constructor sets the position to (x = 0, y = 0) which is suitable for nested Fl_Flex widgets. Use one of the other constructors to set the desired position as well.

Parameters
[in]w,hwidget size
[in]directionhorizontal (row) or vertical (column) layout
See also
Fl_Flex::Fl_Flex(int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, const char *L)

◆ Fl_Flex() [4/4]

Fl_Flex::Fl_Flex ( int  x,
int  y,
int  w,
int  h,
int  direction 
)

Construct a new Fl_Flex widget specifying its layout, position, and size.

Use Fl_Flex::HORIZONTAL (aka Fl_Flex::ROW) or Fl_Flex::VERTICAL (aka Fl_Flex::COLUMN) as the direction argument.

This constructor sets the position and size of the widget which is suitable for top level Fl_Flex widgets but does not set a widget label. Use Fl_Widget::label() to set one if desired.

Parameters
[in]x,ywidget position
[in]w,hwidget size
[in]directionhorizontal (row) or vertical (column) layout
See also
Fl_Flex::Fl_Flex(int direction)
Fl_Flex::Fl_Flex(int w, int h, int direction)
Fl_Flex::Fl_Flex(int x, int y, int w, int h, const char *L)

Member Function Documentation

◆ alloc_size()

int Fl_Flex::alloc_size ( int  size) const
protectedvirtual

Return new size to be allocated for array of fixed size widgets.

This method is called when the array of fixed size widgets needs to be expanded. The current size is provided (size can be 0). The default method adds 8 to the current size.

This can be used in derived classes to change the allocation strategy. Note that this method only queries the new size which shall be allocated but does not allocate the memory.

Parameters
[in]sizecurrent size
Returns
int new size (to be allocated)

◆ draw()

void Fl_Flex::draw ( void  )
protectedvirtual

Draw the widget.

This will finally calculate the layout of the widget and of all its children if necessary and draw the widget.

Some changes of included children may require a new layout to be calculated. If this is the case the user may need to call layout() to make sure everything is calculated properly.

See also
layout()

Implements Fl_Widget.

◆ end()

void Fl_Flex::end ( )
virtual

Ends automatic child addition and resizes all children.

This marks the Fl_Flex widget as changed (need_layout(1)) which forces the widget to calculate its layout depending on all children and whether they have been assigned fix sizes or not right before it is drawn.

See also
need_layout(int)
draw()

◆ fixed() [1/3]

void Fl_Flex::fixed ( Fl_Widget w,
int  size 
)
inline

Set the horizontal or vertical size of a child widget.

Parameters
[in]wwidget to be affected
[in]sizewidth (Fl_Flex::HORIZONTAL) or height (Fl_Flex::VERTICAL)
See also
fixed(Fl_Widget *w, int size)

◆ fixed() [2/3]

int Fl_Flex::fixed ( Fl_Widget w) const

Return whether the given widget has a fixed size or resizes dynamically.

Parameters
[in]wwidget
Returns
whether the widget has a fixed size
Return values
1the widget has a fixed size
0the widget resizes dynamically

◆ fixed() [3/3]

void Fl_Flex::fixed ( Fl_Widget child,
int  size 
)

Set the horizontal or vertical size of a child widget.

This sets either the width or height of a child widget, depending on the type() of the Fl_Flex container (Fl_Flex::HORIZONTAL or Fl_Flex::VERTICAL). The other dimension is set to the full width or height of the Fl_Flex widget minus border and margin sizes.

This can be used to set a fixed widget width or height of children of Fl_Flex so they are not resized dynamically.

If size is 0 (zero) or negative the widget size is reset to flexible size.

Parameters
[in]childwidget to be affected
[in]sizewidth (Fl_Flex::HORIZONTAL) or height (Fl_Flex::VERTICAL)

◆ gap() [1/2]

int Fl_Flex::gap ( ) const
inline

Return the gap size of the widget.

Returns
gap size between all child widgets.

◆ gap() [2/2]

void Fl_Flex::gap ( int  g)
inline

Set the gap size of the widget.

The gap size is some free space between child widgets. The size must be >= 0. Negative values are clamped to 0.

Parameters
[in]ggap size

◆ horizontal()

int Fl_Flex::horizontal ( ) const
inline

Returns non-zero (true) if Fl_Flex alignment is horizontal (row mode).

Returns
non-zero if Fl_Flex alignment is horizontal
Return values
1if type() == Fl_Flex::HORIZONTAL
0if type() == Fl_Flex::VERTICAL

See class Fl_Flex documentation for details.

◆ layout()

void Fl_Flex::layout ( )

Calculates the layout of the widget and redraws it.

If you change widgets in the Fl_Flex container you should call this method to force recalculation of child widget sizes and positions. This can be useful (necessary) if you hide(), show(), add() or remove() children.

Call this method if you need to recalculate widget positions for usage in an algorithm that places widgets at certain positions or when you need to display (show) or hide one or more children depending on the current layout (for instance a side bar).

This method also calls redraw() on the Fl_Flex widget.

◆ margin() [1/4]

int Fl_Flex::margin ( ) const
inline

Returns the left margin size of the widget.

This returns the left margin of the widget which is not necessarily the same as all other margins.

Note
This method is useful if you never set different margin sizes.
See also
int margin(int *left, int *top, int *right, int *bottom) to get all four margin values.
Returns
size of left margin.

◆ margin() [2/4]

int Fl_Flex::margin ( int *  left,
int *  top,
int *  right,
int *  bottom 
) const
inline

Returns all (four) margin sizes of the widget.

All margin sizes are returned in the given arguments. If any argument is NULL the respective value is not returned.

Parameters
[in]leftreturns left margin if not NULL
[in]topreturns top margin if not NULL
[in]rightreturns right margin if not NULL
[in]bottomreturns bottom margin if not NULL
Returns
whether all margins are equal
Return values
1all margins have the same size
0at least one margin has a different size

◆ margin() [3/4]

void Fl_Flex::margin ( int  left,
int  top,
int  right,
int  bottom 
)
inline

Set the margin sizes at all four edges of the Fl_Flex widget.

The margin is the free space inside the widget border around all child widgets.

You must use all four parameters of this method to set the four margins in the order left, top, right, bottom. Negative values are set to 0 (zero).

To set all margins to equal sizes, use margin(int m) which sets all four margins to the same size.

Parameters
[in]left,top,right,bottommargin sizes, must be >= 0
See also
margin(int, int)

◆ margin() [4/4]

void Fl_Flex::margin ( int  m,
int  g = -1 
)
inline

Set the margin and optionally the gap size of the widget.

This method can be used to set both the margin and the gap size.

If you don't use the second parameter g or supply a negative value the gap size is not changed.

The margin is the free space inside the widget border around all child widgets.

This method sets the margin to the same size at all four edges of the Fl_Flex widget.

The gap size g is the free space between child widgets. Negative values do not change the gap value. This is the default if this argument is omitted.

Parameters
[in]mmargin size, must be >= 0
[in]ggap size (ignored, if negative)
See also
gap(int)

◆ need_layout() [1/2]

bool Fl_Flex::need_layout ( ) const
inline

Returns whether layout calculation is required.

This should rarely be needed by user code. Used internally in draw().

◆ need_layout() [2/2]

void Fl_Flex::need_layout ( int  set)
inline

Set or reset the request to calculate the layout of children.

This is intended for internal use but can also be used by user code to request layout calculation before the widget is drawn.

Call this if you changed attributes or sizes of children to ensure that the layout is calculated properly. Changing other Fl_Flex attributes or resizing the widget does this automatically.

Note
Never call this with 'set == 0' because this would defeat its purpose to recalculate the layout before the widget is drawn.

◆ on_remove()

void Fl_Flex::on_remove ( int  index)
protectedvirtual

Allow derived groups to act when a child widget is removed from the group.

Widgets derived from Fl_Group may store additional data for their children. Overriding this method will allow derived classes to remove these data structures just before the child is removed.

Parameters
indexremove the child at this position in the array_

Reimplemented from Fl_Group.

◆ resize()

void Fl_Flex::resize ( int  x,
int  y,
int  w,
int  h 
)
virtual

Resize the container and calculate all child positions and sizes.

Parameters
[in]x,yposition
[in]w,hwidth and height

Reimplemented from Fl_Widget.

◆ spacing() [1/2]

int Fl_Flex::spacing ( ) const
inline

Gets the number of extra pixels of blank space that are added between the children.

This method is the same as 'int gap()' and is defined to enable using Fl_Flex as a drop-in replacement of Fl_Pack.

See also
int gap()

◆ spacing() [2/2]

void Fl_Flex::spacing ( int  i)
inline

Sets the number of extra pixels of blank space that are added between the children.

This method is the same as 'gap(int)' and is defined to enable using Fl_Flex as a drop-in replacement of Fl_Pack.

See also
void gap(int)

The documentation for this class was generated from the following files: