Browse Source

Fix documentation of Fl_Tile (STR #3303).

Clarify that the resizable() box should be the first child to ensure
correct event delivery to children.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@11726 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
pull/49/head
Albrecht Schlosser 9 years ago
parent
commit
21768d9410
  1. 10
      FL/Fl_Tile.H
  2. 17
      src/Fl_Tile.cxx
  3. 15
      test/tile.cxx

10
FL/Fl_Tile.H

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Tile header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2014 by Bill Spitzak and others.
// Copyright 1998-2016 by Bill Spitzak and others.
//
// 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
@ -28,10 +28,10 @@ @@ -28,10 +28,10 @@
class FL_EXPORT Fl_Tile : public Fl_Group {
public:
int handle(int);
Fl_Tile(int X,int Y,int W,int H,const char*l=0);
void resize(int, int, int, int);
void position(int, int, int, int);
int handle(int event);
Fl_Tile(int X, int Y, int W, int H, const char *L=0);
void resize(int X, int Y, int W, int H);
void position(int oldx, int oldy, int newx, int newy);
};
#endif

17
src/Fl_Tile.cxx

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
//
// Tile widget for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2014 by Bill Spitzak and others.
// Copyright 1998-2016 by Bill Spitzak and others.
//
// 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
@ -58,8 +58,13 @@ @@ -58,8 +58,13 @@
Fl_Tile widget is resized, the resizable() widget will keep its border
distance to all borders the same (this is normal resize behavior), so
that you can effectively set a border width that will never change.
To ensure correct event delivery to all child widgets the resizable()
widget must be the first child of the Fl_Tile widget group. Otherwise
some events (e.g. FL_MOVE and FL_ENTER) might be consumed by the resizable()
widget so that they are lost for widgets covered (overlapped) by the
resizable() widget.
<b>Note:</b>
\note
You can still resize widgets \b inside the resizable() to zero width and/or
height, i.e. box \b 2b above to zero width and box \b 3a to zero height.
@ -69,10 +74,10 @@ @@ -69,10 +74,10 @@
\code
int dx = 20, dy = dx;
Fl_Tile tile(50,50,300,300);
// ... create widgets inside tile (see test/tile.cxx) ...
// create resizable() box
// create resizable() box first
Fl_Box r(tile.x()+dx,tile.y()+dy,tile.w()-2*dx,tile.h()-2*dy);
tile.resizable(r);
// ... create widgets inside tile (see test/tile.cxx) ...
tile.end();
\endcode
@ -289,8 +294,8 @@ int Fl_Tile::handle(int event) { @@ -289,8 +294,8 @@ int Fl_Tile::handle(int event) {
\see class Fl_Group
*/
Fl_Tile::Fl_Tile(int X,int Y,int W,int H,const char*l)
: Fl_Group(X,Y,W,H,l)
Fl_Tile::Fl_Tile(int X,int Y,int W,int H,const char*L)
: Fl_Group(X,Y,W,H,L)
{
}

15
test/tile.cxx

@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
//
// "$Id$"
//
// Tile test program for the Fast Light Tool Kit (FLTK).
// Fl_Tile test program for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2014 by Bill Spitzak and others.
// Copyright 1998-2016 by Bill Spitzak and others.
//
// 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
@ -31,6 +31,11 @@ int main(int argc, char** argv) { @@ -31,6 +31,11 @@ int main(int argc, char** argv) {
int dx = 20, dy = dx; // border width of resizable() - see below
Fl_Tile tile(0,0,300,300);
// create the symmetrical resize box with dx and dy pixels distance, resp.
// from the borders of the Fl_Tile widget before all other children
Fl_Box r(tile.x()+dx,tile.y()+dy,tile.w()-2*dx,tile.h()-2*dy);
tile.resizable(r);
Fl_Box box0(0,0,150,150,"0");
box0.box(FL_DOWN_BOX);
box0.color(9);
@ -75,12 +80,6 @@ int main(int argc, char** argv) { @@ -75,12 +80,6 @@ int main(int argc, char** argv) {
box3b.align(FL_ALIGN_CLIP);
//tile3.end();
// create the symmetrical resize box with dx and dy pixels distance, resp.
// from the borders of the Fl_Tile widget
Fl_Box r(tile.x()+dx,tile.y()+dy,tile.w()-2*dx,tile.h()-2*dy);
tile.resizable(r);
// r.box(FL_BORDER_FRAME);
tile.end();
window.end();

Loading…
Cancel
Save