Just recording a bit of my learning the internals of Roassal, since it
helps me flesh out my understanding.
[ROShape>>removeShape:] does not have a test to reference for my
understanding of this, but it appears to not work as expected. For
example in workspace...
b := ROBox new.
c := ROCircle new.
b addLast: c.
b removeShape: ROCircle.
b inspect
results in a linked list of: aROBoxShape --> aROCircleShape -->
aROChildrenShape.
Actually the semantics of [removeShape:] seem problematic. What should
be the result of...
b := ROBox new.
b removeShape: ROBox.
b inspect.
I would guess that 'b' should hold aROChildrenShape, except you can't
change the value of 'b' from inside the [removeShape:] method. (In my
limited knowledge of 'slots', I wonder if this is something they might
help with.) I am relying on the guess that you could have
aROChildrenShape as the only shape on an element, for subviews without a
border, but could you clarify this.
Naively I thought to just try... removeShape: aShapeClass
^ (self isKindOf: aShapeClass)
ifTrue: [ next become: next next ]
ifFalse: [ next removeShape: aShapeClass ]
but the danger of #become hit me and locked my image.
btw, something else just while I am feeling evil, what should happen
with the following...
b := ROBox new.
b removeShape: ROChildrenShape.
b inspect.
cheers -ben