There is no way to do this with the configuration and goals you describe.
The two options I can think of are:
1) don't parent label in Group A. You can float it the label over its
current position, and even put another completely transparent placeholder
component under the label if you need to (to help compute size and position
of the floating label)
2) catch the events on the Label and forward them to groupB. If you know
what the target will be it is a bit easier, otherwise you might have to use
getObjectsUnderPoint or hitTestPoint
Thanks, I decided to float it, the second option would break encapsulation.
I ended up doing the following:
- Wrapped the label in <fx:Declarations>.
- Ensured "mouseEnabled" and "mouseChildren" were set to false on the label.
- Added a function called by "creationComplete" in Group A's skin.
- The function adds the label to systemManager.popUpChildren.
- The function gets the global position of Group A (via localToGlobal) and adds this to the label's X and Y position (i.e. floats it above Group A, uses the label's initial X and Y position as an offset).
- I also added a function to "removedFromStage" to remove the label from systemManager.popUpChildren.
This now looks exactly as it did before, but the label completely ignores mouse activity. So it's a workaround, but it works.
Actually, after testing I realised that doesn't take Group A moving into account, so I used a "initialize" listener to store the label's initial position, then added a "move" listener that uses the method above to position the label.