On Thu, 12 Jan 2023 03:08:30 GMT, Michael Strauß <[email protected]> wrote:

> When a scene graph contains multiple nested focused nodes (this can happen 
> with `TableView` and other controls), the `focusWithin` bits that are cleared 
> when a focused node is de-focused must only be cleared when there is no other 
> nested node in the scene graph that would also cause `focusWithin` to be set.
> 
> For example, consider a scene graph of nested nodes:
> A -> B -> C -> D
> 
> When B and D are both focused, the scene graph looks like this:
> A(`focusWithin`)
> -> B(`focused`, `focusWithin`)
> -> C(`focusWithin`)
> -> D(`focused`, `focusWithin`)
> 
> When B is de-focused, the `focusWithin` flags must still be preserved because 
> D remains focused.
> 
> This PR fixes the issue by counting the number of times `focusWithin` has 
> been "set", and only clears it when it has been "un-set" an equal number of 
> times.

I think this should go into JavaFX 20.

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

PR: https://git.openjdk.org/jfx/pull/993

Reply via email to