FLTK logo

Re: [MOD] STR #2639: Fl_Pack resizes hidden widgets, which it doesn't touch when visible.

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.bugs  ]
 
Previous Message ]New Message | Reply ]Next Message ]

Re: [MOD] STR #2639: Fl_Pack resizes hidden widgets, which it doesn't touch when visible. Albrecht Schlosser Jan 20, 2023  
 
DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: https://www.fltk.org/str.php?L2639
Version: 1.4-feature


Attached file "str2639_rsz_flex.cxx"...


Link: https://www.fltk.org/str.php?L2639
Version: 1.4-feature
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Flex.H>
#include <FL/Fl_Button.H>

Fl_Flex *p1;
Fl_Group *g1, *g2, *g3;

////////////////////////////////////////////////////////////////

static void b1_cb(Fl_Widget *w, void *data) { // "Hide G2"
  Fl_Group *g2 = (Fl_Group *)data;
  if (g2->visible()) {
    g2->hide();
    p1->layout();
  }
}

static void b2_cb(Fl_Widget *w, void *data) {
  Fl_Group *g2 = (Fl_Group *)data;
  if (!g2->visible()) {
    g2->show();
    p1->layout();
  }
}

int main(int argc, char **argv) {
  Fl_Button *b1, *b2;

  Fl_Window *window = new Fl_Window(400, 400, "Fl_Flex test");
  window->begin();

  // p1 = Fl_Flex with only one "resizable" widget inside
  p1 = new Fl_Flex(0, 0, 400, 400);
  p1->type(Fl_Flex::VERTICAL);
  p1->begin();

  g1 = new Fl_Group(0, 0, 0, 30, "Group 1");
  g1->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE);
  g1->box(FL_UP_BOX);
  g1->color(FL_CYAN);
  g1->end();

  g2 = new Fl_Group(0, 0, 0, 30, "Group 2");
  g2->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE);
  g2->box(FL_UP_BOX);
  g2->color(FL_RED);
  g2->end();

  g3 = new Fl_Group(0, 0, 0, 280, "Group 3     R e s i z a b l e");
  g3->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE);
  g3->box(FL_UP_BOX);
  g3->color(FL_GREEN);
  g3->end();

  b1 = new Fl_Button(0, 340, 50, 30);
  b1->label("Hide G2");
  b1->callback(b1_cb, g2);

  b2 = new Fl_Button(0, 370, 50, 30);
  b2->label("Show G2");
  b2->callback(b2_cb, g2);

  // Fl_Flex p1: set layout and end group

  p1->fixed(g1, 30);
  p1->fixed(g2, 30);
  p1->fixed(b1, 30);
  p1->fixed(b2, 30);
  p1->end();
  // p1->resizable(g3); // would be ignored by Fl_Flex

  window->end();
  window->resizable(window);
  window->size_range(200, 60);
  window->show();
  return Fl::run();
}
Direct Link to Message ]
 
     
Previous Message ]New Message | Reply ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.