New properties: focusOwner and focusOwnerWithin
Martin Fox
martin at martinfox.com
Mon Oct 9 16:25:30 UTC 2023
> On Oct 7, 2023, at 2:00 PM, Michael Strauß <michaelstrau2 at gmail.com> wrote:
>
> JavaFX has two closely related focus concepts: `Node.focused`, which
> can apply to any number of nodes in a scene graph, and
> `Scene.focusOwner`, which is the single node in a scene graph that
> accepts user input.
The current JavaDoc for Node.focused is straight-forward and intuitive.
Indicates whether this Node currently has the input focus.
To have the input focus, a node must be the Scene's focus
owner, and the scene must be in a Stage that is visible
and active.
The way TableView is using this property violates all of these criteria.
The proposed focusOwner property is not a replacement because it only meets one of these criteria; a node can be the focusOwner on a stage that is not active in which case it doesn’t actually have the input focus (but it will when the stage is activated). So the proposed focus-owner-within pseudo-class will apply even in windows that aren’t active. It might have it’s uses but it’s not a replacement for focus-within and won’t address the issue in the original bug report.
I think JDK-8317426 should be re-opened. The current implementation of Node.focused is out-of-spec so everything downstream from it (including focus-within) is out-of-spec. But the real issue is that the behavior of Node.focused is utterly unintuitive.
Put another way, if we were to leave the implementation as-is and just update the Node.focused JavaDoc what would the new wording be?
More information about the openjfx-dev
mailing list