func (s *Splitter) SetFixed(widget Widget, fixed bool)
This function works but its usage is very cumbersome as you have to assign all widgets first to variables and there is no place to call it from (there is no "OnStarting:" event on Dialog or Form).
The Fixed property is assigned to the children which makes sense for the splitterLayout and splitterLayoutItem logic (see walk/splitterLayout.go) but to the end-user logic this is the wrong place.
I propose to add a property "Fixed int" to declarative.VSplitter and declarative.HSplitter.
by default this field is zero and has no effect.
if it is set to a positive value then the FIRST N items will be set to Fixed during Widget initialisation.
if it is set to a negative value then the LAST N items will be set to Fixed during Widget initialisation.
This is only a initialisation thing so it can be coded vary fast . . . if it were not for that excessive use of interfaces in GOlang is not a convenience (you probably don't agree with that now but will understand what I meant when you're putting it in).
Related bug (while you are at it), it is not allowed to make all items fixed. I had this when making the last item {visible=false}. That thad the effect that the window could be made larger not not smaller, making it larger every time I moved it (even beyond screen size) because the fixed item is allowed to grow but not allowed to shrink.
So if all (that is without the invisible ones) items are fixed then the fixed indicator should be ignored.
About
This is only a initialisation thing so it can be coded vary fast . . . if it were not for that excessive use of interfaces in GOlang is not a convenience (you probably don't agree with that now but will understand what I meant when you're putting it in).