RelativeToParent


A decorator for use with SCCompositeView

it causes the coordinate system of children placed


Normally the coordinate system is the same of that as the parent,

not relative to the parent.  ie. 0,0 is not the top left corner inside of the parent)

as you might expect.

(

w = GUI.window.new;


c = GUI.compositeView.new(w,Rect(50,0,300,300));


a = GUI.slider2D.new(c,Rect(0,0,100,100));   

b = GUI.slider2D.new(c,Rect(100,100,100,100));


c.background = Gradient(Color.rand,Color.rand);


w.front;


)


the decorator fixes that for you

(

w = GUI.window.new;


c = GUI.compositeView.new(w,Rect(50,0,300,300));

c.decorator = RelativeToParent( c.bounds );


a = GUI.slider2D.new(c,Rect(0,0,100,100));   

b = GUI.slider2D.new(c,Rect(100,100,100,100));


c.background = Gradient(Color.rand,Color.rand);


w.front;


)


// this doesn't work yet though

c.bounds = c.bounds.moveBy(50,50);



development note:


what is needed is to inform the decorator that the parentBoundsDidChange

and replace all children.

the same thing needs to happen when a child is removed (if the decorator was a flow layout).