Hey Jan,
While debugging the flow view problem with relative origin parents,
I found this little gem:
(
// this works
w = GUI.window.new("test", Rect(20, 20, 300, 300)).front;
c = GUI.compositeView.new(w, Rect(100, 100, 100, 100))
.background_(Color.gray(0.9))
.relativeOrigin_(true);
t = GUI.staticText.new(c, Rect(0, 0, 90, 20)).string_("hello");
)
// this don't
t.bounds = Rect(4, 4, 90.0, 20.0);
The trouble is, this is exactly how decorators work -- the new view
gets placed initially using the original bounds, then the
decorator's place method is called which sets the new view's bounds
to the calculated position.
I can fix it in SCView like this, but maybe for performance this
logic should be moved into the backend?
+ SCView {
bounds_ { arg rect;
var parentView, parentBounds;
if((parentView = this.parent.asView).relativeOrigin) {
parentBounds = parentView.bounds;
this.setProperty(\bounds, rect.moveBy(parentBounds.left,
parentBounds.top));
} {
this.setProperty(\bounds, rect)
};
}
}
Let me know if this change is okay to commit, or if you would
rather do do it in the primitive.
hjh
: H. James Harkins
: jamshark70@xxxxxxxxxxxxxxxxx
: http://www.dewdrop-world.net
.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:
"Come said the Muse,
Sing me a song no poet has yet chanted,
Sing me the universal." -- Whitman
_______________________________________________
Sc-devel mailing list
Sc-devel@xxxxxxxxxxxxxxx
http://www.create.ucsb.edu/mailman/listinfo/sc-devel