4 // place a FlowView on this FlowView
5 flow { arg func,bounds;
8 f = FlowView(this,bounds);
12 f = FlowView(this,this.allocateRemaining);
14 consumed = f.resizeToFit;
16 if(this.decorator.bounds.containsRect(consumed).not,{
18 // pretend I just consumed nothing
19 this.didUseAllocated(consumed.resizeTo(0,0));
22 this.decorator.nextLine; // don't put a StartRow in there, the decorator should auto-flow on resize
24 b = this.allocateRemaining;
25 // and if its too big for that then it will just have to jutt or scroll over
26 // that's what you asked for.
27 // move the last object there
29 // reflow the sub view
30 f.reflowAll.resizeToFit;
31 this.didUseAllocated(f.bounds);
33 this.didUseAllocated(consumed);
38 horz { arg func,bounds,spacing;
40 comp = GUI.hLayoutView.new(this,bounds ?? { this.indentedRemaining });
42 comp.spacing = spacing ? GUI.skin.gap.x;
47 vert { arg func,bounds,spacing;
49 comp = GUI.vLayoutView.new(this,bounds ?? { this.indentedRemaining });
51 comp.spacing = spacing ? GUI.skin.gap.y;
56 comp { arg func,bounds;
58 comp = GUI.compositeView.new(this,bounds ?? { this.indentedRemaining });
62 scroll { arg func,bounds,
63 autohidesScrollers=true,autoScrolls=true,
64 hasHorizontalScroller=true,hasVerticalScroller=true;
66 comp = GUI.scrollView.new(this,bounds ?? { this.bounds });
67 comp.autohidesScrollers = autohidesScrollers;
69 comp.autoScrolls = autoScrolls;
71 comp.hasHorizontalScroller = hasHorizontalScroller;
72 comp.hasVerticalScroller = hasVerticalScroller;