And here's the aforementioned illustration: Compiled and tested with "fltk-config --compile layout.cxx", worked OK.
*Why* it works is left as an exercise for the reader, as it's too hard to explain...
#include <FL/Fl.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
static Fl_Double_Window *main_win = (Fl_Double_Window *)0;
static void cb_quit_bt (Fl_Button *, void *)
{
main_win->hide();
}
#define WWD 690
#define BWW 64
int main (int argc, char **argv)
{
main_win = new Fl_Double_Window (WWD, 360, "Test Window");
main_win->begin();
Fl_Group *g1 = new Fl_Group (0, 0, WWD, 300);
g1->begin();
//g1->box(FL_BORDER_BOX);
Fl_Group *g2 = new Fl_Group (0, 25, WWD, 27);
g2->begin();
//g2->box(FL_BORDER_BOX);
Fl_Group *g2a = new Fl_Group (0, 25, 230, 27);
g2a->begin();
//g2a->box(FL_BORDER_BOX);
Fl_Button *b1 = new Fl_Button (5, 25, BWW, 23, "B1");
Fl_Button *b2 = new Fl_Button (70, 25, BWW, 23, "B2");
Fl_Box *sp2 = new Fl_Box (135, 25, 1, 1);
//sp2->box(FL_BORDER_BOX);
g2a->end();
g2a->resizable(sp2);
Fl_Group *g3 = new Fl_Group (276, 25, WWD - 276, 27);
g3->begin();
//g3->box(FL_BORDER_BOX);
Fl_Button *b3 = new Fl_Button (276, 25, BWW, 23, "B3");
Fl_Button *b4 = new Fl_Button (340, 25, BWW, 23, "B4");
Fl_Box *sp3 = new Fl_Box (404, 25, 1, 1);
//sp3->box(FL_BORDER_BOX);
Fl_Group *g4 = new Fl_Group (WWD - BWW - BWW - 10, 25, BWW + BWW + 10, 27);
g4->begin();
//g4->box(FL_BORDER_BOX);
Fl_Box *sp4 = new Fl_Box (WWD - BWW - BWW - 10, 25, 1, 1);
//sp4->box(FL_BORDER_BOX);
Fl_Button *b5 = new Fl_Button (WWD - BWW - BWW - 5, 25, BWW, 23, "B5");
Fl_Button *b6 = new Fl_Button (WWD - BWW - 5, 25, BWW, 23, "B6");
g4->end();
g4->resizable(sp4);
g3->end();
g3->resizable(sp3);
g2->end();
Fl_Box *sp1 = new Fl_Box (1, 52, WWD - 2, 248);
//sp1->box(FL_BORDER_BOX);
g1->end();
g1->resizable(sp1);
Fl_Button *quit_bt = new Fl_Button (WWD - BWW - 5, 322, BWW, 23, "Quit");
quit_bt->callback ((Fl_Callback *)cb_quit_bt);
main_win->end();
main_win->resizable (g1);
main_win->show (argc, argv);
return Fl::run();
}
// end of file //