RFR: 8365637: Unmanaged nodes are not added to the Scene's dirty layout list
John Hendrikx
jhendrikx at openjdk.org
Sun Aug 17 15:38:32 UTC 2025
On Sun, 17 Aug 2025 15:32:24 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:
> This PR adds the necessary logic to automatically relayout unmanaged nodes when they're dirty as specified by the documentation. Relevant sections (emphasis mine):
>
> ### Parent::requestLayout
>
>> If this parent is either a layout root or unmanaged, then it will be added directly to the **scene's dirty layout list**, otherwise requestParentLayout will be invoked.
>
> ### Node::managedProperty
>
>> If a managed node's layoutBounds changes, it will **automatically trigger relayout** up the scene-graph to the **nearest layout root**
>
> And:
>
>> If an **unmanaged node** is of type `Parent`, it will act as a **"layout root"**
>
> From this I conclude that:
> - A layout root is any node that is unmanaged (and of type `Parent`), or a Scene's root node
> - Changes requiring layout in managed children that have an unmanaged parent somewhere in their ancestry should cause layout to be triggered for the affected areas
> - Automatic relayout is triggered either by scheduling a pulse (for scene roots) or by adding a layout root to the Scene's dirty layout list
>
> Note that Scene currently does not have a dirty layout list.
>
> Note also that the documentation for `requestLayout` probably meant to say "**scene** root or unmanaged" instead of "**layout** root or unmanaged."
There is a tiny change in the documentation, but it doesn't change the meaning (a scene root is a layout root, and unmanaged nodes are layout roots; there are no other types of layout roots). Can do a CSR though if deemed needed.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1874#issuecomment-3194461635
More information about the openjfx-dev
mailing list