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
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."
-------------
Commit messages:
- Add unmanaged nodes in need of layout to a dirty layout root list
Changes: https://git.openjdk.org/jfx/pull/1874/files
Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1874&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8365637
Stats: 44 lines in 3 files changed: 43 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jfx/pull/1874.diff
Fetch: git fetch https://git.openjdk.org/jfx.git pull/1874/head:pull/1874
PR: https://git.openjdk.org/jfx/pull/1874
More information about the openjfx-dev
mailing list