I was trying to apply ROTranslatingShape to produce a label sitting above the children nodes. To understand it better how to get what I
need, I made ROExample>>nestingTranslate to show a permutation of the order the shapes can be applied. I have attached a screen snapshot and fileout for this. The case I am particularly interested in is el3.
The 'el0' case is the reference without any ROTranslatingShape.
When running the example hover near and over the inner elements to view the misalignment of the mouse hotspot. I have marked the approximate offset in green in the snapshot.
I notice that the existing call chain goes...
ROView>>localElementAt:
ROElement>>elementAt:
ROElement>>contains:
ROElemenet>>bounds
ROShape>>extentFor: (union of extent of each shape)
It seems to me the hotspot misalignment is related to the translation being applied at the shape draw level whereas the #contains: checking is done at the element level. This relies on the union of the shape extents to set the element bounds, but I can't see how that extent union could be modified to account for the translation - particular in the case of a negative translation since extents throw away information
about any negative offset.
So I thought perhaps that the element #contains: checking needs might be better chained through the shaped, so that the translation
could be applied similar to ROTranslatingShape>>chainedDrawOn:for: and that this would not cause any/much additional computation since all the shapes were being cycled through anyway for #extentFor:
Something like...
ROView>>localElementAt:
ROElement>>elementAt:
ROElement>>contains:
ROShape>>chainedContains:For: (for each shape)
cheers, Ben
_______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev