On Thu, 20 Nov 2025 08:28:57 GMT, Marius Hanl <[email protected]> wrote:

>> Thank you @Maran23 for looking into this PR!
>> 
>> My experience is exactly opposite - I do use it often.  The `Node` (or 
>> `JComponent`) hierarchy is a hierarchy, explicitly retaining the pointers to 
>> the each member's parent.
>> 
>> A specific member can be a child of a certain Parent, direct or otherwise, 
>> by design, and this method allows to get to that parent easily.
>> 
>> Let me ask you this - what is the alternative?  Maintain a duplicate pointer?
>> 
>> Also, keep in mind this is not public API, it's a utility.
>
> What I mean is:
> Everything is part of the `RichTextLabel`. Requesting a layout from a node 
> inside should request a layout for each parent, also `RichTextLabel`. So you 
> should normally know that on the `RichTextLabel` level, which also manages 
> the `VFlow`. So it can do the corresponding actions, just by the node 
> requesting the layout.
> 
> If we take a look at other more complex Controls, they do the following:
> - `VirtualFlow.requestCellLayout` -> sets a flag
> - `layout` is requested, and due to the flag, we know what to do
> 
> Maybe something that could be done here as well? Could also be done by 
> `Properties` perhaps.
> 
>> A specific member can be a child of a certain Parent, direct or otherwise, 
>> by design, and this method allows to get to that parent easily.
>> ...
>> Also, keep in mind this is not public API, it's a utility.
> 
> Yes, we can always get the parent hierarchy. But that does not mean we 
> should. 
> Making assumptions about the hierarchy will make subclasses and 
> customizations (e.g. in the Skin) worse. If we extend `RichTextLabel` and use 
> another Node then `VFlow`, then we can expect `TextCell`s not to work anymore?
> 
> In JavaFX, as you can also see in the codebase and other controls, retrieving 
> an ancestor somewhere in the scene graph is pretty much never done or needed. 
> I did not have a look on this particular issue, but what I want to suggest is 
> to take another look at the problem and how to solve it. So we don't need to 
> rely on finding a specific node that might be somewhere in the scene graph.

If I remember correctly from what I've traced, is that _requestLayout_ from the 
embedded node is propagating upwards until it reaches `TextCell` which extends 
a `BorderPane`. At this point _requestLayout_ in `Parent` invokes 
_markDirtyLayout_ with the **forceParentLayout** parameter/flag being **false** 
and the propagation stops.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1975#discussion_r2545969921

Reply via email to