RFR: 8091673: Public focus traversal API for use in custom controls [v3]
Michael Strauß
mstrauss at openjdk.org
Mon Oct 28 17:40:51 UTC 2024
On Mon, 28 Oct 2024 17:33:46 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> Because `focusVisible` is specified to _only_ be set as a result of keyboard navigation, not as a result of programmatic navigation.
>>
>> `Node.focusVisible` specifies:
>>
>> /**
>> * Indicates whether this {@code Node} should visibly indicate focus.
>> * This flag is set when the node acquires input focus via keyboard navigation,
>> * and it is cleared when the node loses focus or when {@link #requestFocus()}
>> * is called.
>> *
>> * @defaultValue false
>> * @since 19
>> */
>>
>>
>> The [JBS issue](https://bugs.openjdk.org/browse/JDK-8268225) says:
>>> For JavaFX, "Node.focusVisible" would be set in addition to "Node.focused" if a scene graph node gained focus as a consequence of keyboard input. In all other cases, "Node.focusVisible" would not be set on a node.
>
> To clarify, this PR changes nothing in the way FX behaves in relation to focus. Nothing. I only provided a public API for use in custom controls.
>
> So whatever discrepancy between FX and w3.org spec you mention (not sure why, this isn't an FX spec) applies equally to the existing implementation (if not, please let me know - you found a bug).
>
> However, perhaps, you pointing out that the docs may be improved - and you are doing so in a very difficult manner. Or maybe you are pointing out the fact that we should bring back the traverse(Node, TraversalDirection, boolean focusVisible) call?
I just quoted you the JavaFX specification, not W3C. It very clearly says that the `focusVisible` flag is only set when a node acquires focus as a result of keyboard navigation. You are proposing to extend the API to change focus programmatically, and in the process also set `focusVisible`, thus violating that specification.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1604#discussion_r1819482860
More information about the openjfx-dev
mailing list