On Fri, 13 Jan 2023 04:04:54 GMT, Michael Strauß <mstra...@openjdk.org> 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.
>
> Michael Strauß has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   refactoring

The fix looks fine to me!

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

Marked as reviewed by aghaisas (Reviewer).

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

Reply via email to