mirror of
https://github.com/fltk/fltk.git
synced 2026-06-01 06:14:28 +08:00
Clarify documentation of Fl_Pack
This commit is contained in:
+37
-13
@@ -3,17 +3,17 @@
|
|||||||
//
|
//
|
||||||
// Pack header file for the Fast Light Tool Kit (FLTK).
|
// Pack header file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2010 by Bill Spitzak and others.
|
// Copyright 1998-2020 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
// file is missing or damaged, see the license at:
|
// file is missing or damaged, see the license at:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/COPYING.php
|
// https://www.fltk.org/COPYING.php
|
||||||
//
|
//
|
||||||
// Please report all bugs and problems on the following page:
|
// Please report all bugs and problems on the following page:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/str.php
|
// https://www.fltk.org/str.php
|
||||||
//
|
//
|
||||||
|
|
||||||
/* \file
|
/* \file
|
||||||
@@ -27,18 +27,31 @@
|
|||||||
/**
|
/**
|
||||||
This widget was designed to add the functionality of compressing and
|
This widget was designed to add the functionality of compressing and
|
||||||
aligning widgets.
|
aligning widgets.
|
||||||
<P>If type() is Fl_Pack::HORIZONTAL all the children are
|
|
||||||
|
If type() is Fl_Pack::HORIZONTAL all the children are
|
||||||
resized to the height of the Fl_Pack, and are moved next to
|
resized to the height of the Fl_Pack, and are moved next to
|
||||||
each other horizontally. If type() is not Fl_Pack::HORIZONTAL
|
each other horizontally. If type() is not Fl_Pack::HORIZONTAL
|
||||||
then the children are resized to the width and are stacked below each
|
then the children are resized to the width and are stacked below each
|
||||||
other. Then the Fl_Pack resizes itself to surround the child
|
other. Then the Fl_Pack resizes itself to surround the child widgets.
|
||||||
widgets.
|
|
||||||
<P>This widget is needed for the Fl_Tabs.
|
|
||||||
In addition you may want to put the Fl_Pack inside an
|
|
||||||
Fl_Scroll.
|
|
||||||
|
|
||||||
<P>The resizable for Fl_Pack is set to NULL by default.</p>
|
You may want to put the Fl_Pack inside an Fl_Scroll.
|
||||||
<P>See also: Fl_Group::resizable()
|
|
||||||
|
The \p 'resizable()' for Fl_Pack is set to NULL by default. Its behavior
|
||||||
|
is slightly different than in a normal Fl_Group widget: only if the
|
||||||
|
resizable() widget is the last widget in the group it is extended to take
|
||||||
|
the full available width or height, respectively, of the Fl_Pack group.
|
||||||
|
|
||||||
|
\note You can nest Fl_Pack widgets or put them inside Fl_Scroll widgets
|
||||||
|
or inside other group widgets but their behavior can sometimes be
|
||||||
|
<i>"surprising"</i>. This is partly due to the fact that Fl_Pack widgets
|
||||||
|
resize themselves during their draw() operation, trying to react on
|
||||||
|
their child widgets resizing themselves during \b their draw() operations
|
||||||
|
which can be confusing. If you want to achieve special resize behavior
|
||||||
|
of nested group widgets it can sometimes be easier to derive your own
|
||||||
|
specialized group widget than to try to make nested Fl_Pack widgets
|
||||||
|
behave as expected.
|
||||||
|
|
||||||
|
\see Fl_Group::resizable()
|
||||||
*/
|
*/
|
||||||
class FL_EXPORT Fl_Pack : public Fl_Group {
|
class FL_EXPORT Fl_Pack : public Fl_Group {
|
||||||
int spacing_;
|
int spacing_;
|
||||||
@@ -53,7 +66,7 @@ protected:
|
|||||||
void draw();
|
void draw();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Fl_Pack(int x,int y,int w ,int h,const char *l = 0);
|
Fl_Pack(int X, int Y, int W, int H, const char *L = 0);
|
||||||
/**
|
/**
|
||||||
Gets the number of extra pixels of blank space that are added
|
Gets the number of extra pixels of blank space that are added
|
||||||
between the children.
|
between the children.
|
||||||
@@ -64,7 +77,18 @@ public:
|
|||||||
between the children.
|
between the children.
|
||||||
*/
|
*/
|
||||||
void spacing(int i) {spacing_ = i;}
|
void spacing(int i) {spacing_ = i;}
|
||||||
/** Same as Fl_Group::type() */
|
/** Returns non-zero if Fl_Pack alignment is horizontal.
|
||||||
|
|
||||||
|
\returns non-zero if Fl_Pack alignment is horizontal (Fl_Pack::HORIZONTAL)
|
||||||
|
|
||||||
|
\note Currently the return value is the same as Fl_Group::type(), but
|
||||||
|
this may change in the future. Do not set any other values than the
|
||||||
|
following with Fl_Pack::type():
|
||||||
|
- Fl_Pack::VERTICAL (Default)
|
||||||
|
- Fl_Pack::HORIZONTAL
|
||||||
|
|
||||||
|
See class Fl_Pack documentation for details.
|
||||||
|
*/
|
||||||
uchar horizontal() const {return type();}
|
uchar horizontal() const {return type();}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -3,17 +3,17 @@
|
|||||||
//
|
//
|
||||||
// Widget header file for the Fast Light Tool Kit (FLTK).
|
// Widget header file for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2016 by Bill Spitzak and others.
|
// Copyright 1998-2020 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
// file is missing or damaged, see the license at:
|
// file is missing or damaged, see the license at:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/COPYING.php
|
// https://www.fltk.org/COPYING.php
|
||||||
//
|
//
|
||||||
// Please report all bugs and problems on the following page:
|
// Please report all bugs and problems on the following page:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/str.php
|
// https://www.fltk.org/str.php
|
||||||
//
|
//
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
@@ -201,8 +201,8 @@ public:
|
|||||||
(because draw() is virtual) like this:
|
(because draw() is virtual) like this:
|
||||||
|
|
||||||
\code
|
\code
|
||||||
Fl_Widget *s = &scroll; // scroll is an embedded Fl_Scrollbar
|
Fl_Widget *s = &scrollbar; // scrollbar is an embedded Fl_Scrollbar
|
||||||
s->draw(); // calls Fl_Scrollbar::draw()
|
s->draw(); // calls Fl_Scrollbar::draw()
|
||||||
\endcode
|
\endcode
|
||||||
*/
|
*/
|
||||||
virtual void draw() = 0;
|
virtual void draw() = 0;
|
||||||
|
|||||||
+24
-14
@@ -3,17 +3,17 @@
|
|||||||
//
|
//
|
||||||
// Packing widget for the Fast Light Tool Kit (FLTK).
|
// Packing widget for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
// Copyright 1998-2010 by Bill Spitzak and others.
|
// Copyright 1998-2020 by Bill Spitzak and others.
|
||||||
//
|
//
|
||||||
// This library is free software. Distribution and use rights are outlined in
|
// This library is free software. Distribution and use rights are outlined in
|
||||||
// the file "COPYING" which should have been included with this file. If this
|
// the file "COPYING" which should have been included with this file. If this
|
||||||
// file is missing or damaged, see the license at:
|
// file is missing or damaged, see the license at:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/COPYING.php
|
// https://www.fltk.org/COPYING.php
|
||||||
//
|
//
|
||||||
// Please report all bugs and problems on the following page:
|
// Please report all bugs and problems on the following page:
|
||||||
//
|
//
|
||||||
// http://www.fltk.org/str.php
|
// https://www.fltk.org/str.php
|
||||||
//
|
//
|
||||||
|
|
||||||
// Based on code by Curtis Edwards
|
// Based on code by Curtis Edwards
|
||||||
@@ -27,16 +27,26 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
Creates a new Fl_Pack widget using the given position, size,
|
Creates a new Fl_Pack widget using the given position, size,
|
||||||
and label string. The default boxtype is FL_NO_BOX.
|
and label string.
|
||||||
<P>The destructor <I>also deletes all the children</I>. This allows a
|
|
||||||
|
The default boxtype is FL_NO_BOX.
|
||||||
|
|
||||||
|
The default type() is Fl_Pack::VERTICAL.
|
||||||
|
|
||||||
|
The destructor <I>also deletes all the children</I>. This allows a
|
||||||
whole tree to be deleted at once, without having to keep a pointer to
|
whole tree to be deleted at once, without having to keep a pointer to
|
||||||
all the children in the user code. A kludge has been done so the
|
all the children in the user code. A kludge has been done so the
|
||||||
Fl_Pack and all of it's children can be automatic (local)
|
Fl_Pack and all of its children can be automatic (local)
|
||||||
variables, but you must declare the Fl_Pack<I>first</I>, so
|
variables, but you must declare the Fl_Pack <I>first</I>, so
|
||||||
that it is destroyed last.
|
that it is destroyed last.
|
||||||
|
|
||||||
|
\param[in] X,Y X and Y coordinates (position)
|
||||||
|
\param[in] W,H width and height, respectively
|
||||||
|
\param[in] L label (optional)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
Fl_Pack::Fl_Pack(int X, int Y, int W, int H,const char *l)
|
Fl_Pack::Fl_Pack(int X, int Y, int W, int H, const char *L)
|
||||||
: Fl_Group(X, Y, W, H, l) {
|
: Fl_Group(X, Y, W, H, L) {
|
||||||
resizable(0);
|
resizable(0);
|
||||||
spacing_ = 0;
|
spacing_ = 0;
|
||||||
// type(VERTICAL); // already set like this
|
// type(VERTICAL); // already set like this
|
||||||
@@ -55,7 +65,7 @@ void Fl_Pack::draw() {
|
|||||||
if (horizontal()) {
|
if (horizontal()) {
|
||||||
rw = -spacing_;
|
rw = -spacing_;
|
||||||
rh = th;
|
rh = th;
|
||||||
|
|
||||||
for (int i = children(); i--;)
|
for (int i = children(); i--;)
|
||||||
if (child(i)->visible()) {
|
if (child(i)->visible()) {
|
||||||
if (child(i) != this->resizable()) rw += child(i)->w();
|
if (child(i) != this->resizable()) rw += child(i)->w();
|
||||||
@@ -64,7 +74,7 @@ void Fl_Pack::draw() {
|
|||||||
} else {
|
} else {
|
||||||
rw = tw;
|
rw = tw;
|
||||||
rh = -spacing_;
|
rh = -spacing_;
|
||||||
|
|
||||||
for (int i = children(); i--;)
|
for (int i = children(); i--;)
|
||||||
if (child(i)->visible()) {
|
if (child(i)->visible()) {
|
||||||
if (child(i) != this->resizable()) rh += child(i)->h();
|
if (child(i) != this->resizable()) rh += child(i)->h();
|
||||||
@@ -116,7 +126,7 @@ void Fl_Pack::draw() {
|
|||||||
current_position += spacing_;
|
current_position += spacing_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (horizontal()) {
|
if (horizontal()) {
|
||||||
if (maximum_position < tx+tw && box()) {
|
if (maximum_position < tx+tw && box()) {
|
||||||
fl_color(color());
|
fl_color(color());
|
||||||
@@ -130,7 +140,7 @@ void Fl_Pack::draw() {
|
|||||||
}
|
}
|
||||||
th = maximum_position-ty;
|
th = maximum_position-ty;
|
||||||
}
|
}
|
||||||
|
|
||||||
tw += Fl::box_dw(box()); if (tw <= 0) tw = 1;
|
tw += Fl::box_dw(box()); if (tw <= 0) tw = 1;
|
||||||
th += Fl::box_dh(box()); if (th <= 0) th = 1;
|
th += Fl::box_dh(box()); if (th <= 0) th = 1;
|
||||||
if (tw != w() || th != h()) {
|
if (tw != w() || th != h()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user