Hi Albrecht,
Thanks for your suggestion. I have had a read and play with a number of different ways that interfaces are built with FLTK and the Fl_Pack in particular does come really close. However it seems to be a little limited in terms of allowing the user to state which multiple elements should expand. I.e I am not yet convinced that it would be able to provide some of the layouts provided by my quick demo (screenshot on the github link). Or at least, I haven't been able to.
That said, some of it could be my relatively recent knowledge of FLTK (so
certainly if you guys agree that all the existing solutions can provide any
layout required, I am inclined to believe you!)
I think another that came really close was using multiple Fl_Groups such as in the very last diagram on this page:
https://www.fltk.org/doc-1.4/resize.html. However, there are still a few areas where this alone cannot quite suffice (i.e centering a single element in the middle). I have seen suggestions of inheriting from and overriding the resize() function of Fl_Group which is effectively how Fl_Flex was born; initially I just wanted to center something.
I also note that having to mix and match a number of different layout systems to achieve the desired result may end up being more complex than something like Fl_Flex.
Now, I understand that not everyone likes laying out UI in rows and columns (kinda like misusing classic tables in HTML!), but it is also consistent with a number of other GUI systems which might also be a benefit here for porting between systems. At the moment there is no "minimum child size" machinery but if that is added, this approach is also generally pretty effective for avoiding resize issues such as overlapping elements if the window size is reduced.
Many thanks,
Karsten