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