DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2130
Version: 1.1.9





Link: http://www.fltk.org/str.php?L2130
Version: 1.1.9
//
//  This demonstrates a bug in FLTK-1.1.9 .  If you shrink the window
//  vertically of the window then after a short while the boxes
//  suddenly disappear.  They reappear if you stretch the window back
//  to its vertical extent, and disappear again if you shrink it
//  again.
//

#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Pack.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>

static Fl_Box *bx = 0;
static Fl_Box *by = 0;
static Fl_Box *bw = 0;
static Fl_Box *bh = 0;

static Fl_Box *bw2 = 0;
static Fl_Box *bh2 = 0;

static Fl_Check_Button *bc = 0;

static char buf[20];

#include <stdio.h>

class Fl_Pack_Test : public Fl_Pack {
  protected:
    void draw() {
      clip_children(bc->value());
      if (bx) { sprintf(buf,"x=%d",x()); bx->copy_label(buf); bx->redraw(); }
      if (by) { sprintf(buf,"y=%d",y()); by->copy_label(buf); by->redraw(); }
      if (bw) { sprintf(buf,"w=%d",w()); bw->copy_label(buf); bw->redraw(); }
      if (bh) { sprintf(buf,"h=%d",h()); bh->copy_label(buf); bh->redraw(); }
      Fl_Pack::draw();
      if (bw2) { sprintf(buf,"w=%d",w()); bw2->copy_label(buf); bw2->redraw(); }
      if (bh2) { sprintf(buf,"h=%d",h()); bh2->copy_label(buf); bh2->redraw(); }
    }
  public:
    Fl_Pack_Test::Fl_Pack_Test(int X,int Y,int W,int H) : Fl_Pack(X,Y,W,H) {}
};

int main()
{
  setvbuf (stdout,NULL,_IONBF,0);

  int px = 60;
  int py = 60;
  int pw = 300;
  int ph = 200;

  Fl_Window *win = new Fl_Double_Window(800,30, 400, 400,
    "STR #2130: Contents of Fl_Pack disappear ...");

  Fl_Box *frame = new Fl_Box (px-5,py-5,pw+10,ph+10);
  frame->box(FL_FLAT_BOX);
  frame->color (FL_WHITE);

  Fl_Pack_Test *pack = new Fl_Pack_Test(px,py,pw,ph);
  pack->type(Fl_Pack::VERTICAL);
  pack->color(FL_YELLOW);
  // pack->box(FL_FRAME_BOX);

    Fl_Box *b1 = new Fl_Box(0, 0, 10, 100,"B O X   # 1");
    b1->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER);
    b1->box(FL_FLAT_BOX);
    b1->color(FL_BLUE);
    b1->labelcolor(FL_WHITE);

    Fl_Box *b2 = new Fl_Box(0, 0, 10, 50,"B O X   # 2");
    b2->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER);
    b2->box(FL_FLAT_BOX);
    b2->color(FL_RED);

    Fl_Box *b3 = new Fl_Box(0, 0, 10, 50,"B O X   # 3");
    b3->align(FL_ALIGN_INSIDE|FL_ALIGN_CENTER);
    b3->box(FL_FLAT_BOX);
    b3->color(FL_YELLOW);

  pack->end();
  
  pack->clip_children(1);

  Fl_Box *line = new Fl_Box(0,py+ph+10,400,5);
  line->box(FL_FLAT_BOX);
  line->color(fl_lighter(FL_GREEN));

  bc = new Fl_Check_Button (10,340,100,30,"Clip");
    bc->visible_focus(0);

  bx = new Fl_Box(10,380,50,20,"bx");
    bx->box(FL_FLAT_BOX);
    bx->color(FL_WHITE);
    bx->align(FL_ALIGN_INSIDE);
  
  by = new Fl_Box(70,380,50,20,"by");
    by->box(FL_FLAT_BOX);
    by->color(FL_WHITE);
    by->align(FL_ALIGN_INSIDE);
  
  bw = new Fl_Box(130,380,50,20,"bw");
    bw->box(FL_FLAT_BOX);
    bw->color(FL_WHITE);
    bw->align(FL_ALIGN_INSIDE);
  
  bh = new Fl_Box(190,380,50,20,"bh");
    bh->box(FL_FLAT_BOX);
    bh->color(FL_WHITE);
    bh->align(FL_ALIGN_INSIDE);
  
  bw2 = new Fl_Box(280,380,50,20,"bw");
    bw2->box(FL_FLAT_BOX);
    bw2->color(FL_WHITE);
    bw2->align(FL_ALIGN_INSIDE);
  
  bh2 = new Fl_Box(340,380,50,20,"bh2");
    bh2->box(FL_FLAT_BOX);
    bh2->color(FL_WHITE);
    bh2->align(FL_ALIGN_INSIDE);

  win->resizable(pack);
  win->size_range(400, 1, 0, 0);
  win->show();
  return Fl::run();
}
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to