On Sat, 19 Nov 2022 18:01:41 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

> This PR fixes a bug where multi-level focus is not correctly preserved.
> The original implementation incorrectly assumed that there can only be a 
> single focused node in the scene graph, which is not the case when a branch 
> of the scene graph is presented by a `PopupWindow`. More specifically, when a 
> focused node was removed from the scene graph, the focus flags of all parents 
> were incorrectly cleared. The correct implementation only clears the 
> `focusWithin` flag of parents (but not `focused` or `focusVisible`), and 
> stops when another focused node is encountered along the way.

no ill effects observed with several test applications.

incidentally, this change has no effect on JDK-8292933 dual focus issue.

modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 8196:

> 8194:         if (oldParent != null && focusWithin.get()) {
> 8195:             Node node = oldParent;
> 8196:             while (node != null && !node.focused.get()) {

is there a reason not to use isFocused() ?

modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 8243:

> 8241:                     node.focusWithin.set(value);
> 8242:                     node = node.getParent();
> 8243:                 } while (node != null && !node.focused.get());

isFocused() ?

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

Marked as reviewed by angorya (Author).

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

Reply via email to