On Wed, 6 Jul 2022 22:17:52 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

>> Michael Strauß has updated the pull request with a new target base due to a 
>> merge or a rebase. The incremental webrev excludes the unrelated changes 
>> brought in by the merge/rebase. The pull request contains 23 additional 
>> commits since the last revision:
>> 
>>  - Merge branch 'master' into feature/focusvisible
>>  - Updated since tag
>>  - Update copyright headers
>>  - Merge branch 'master' into feature/focusvisible
>>  - fixed undeterministic test failures
>>  - minor wording change
>>  - restart github actions
>>  - Merge branch 'master' of https://github.com/mstr2/jfx into 
>> feature/focusvisible
>>  - changes per discussion, added test
>>  - wording
>>  - ... and 13 more: https://git.openjdk.org/jfx/compare/7cf8f2d0...0c7d6e72
>
> modules/javafx.graphics/src/main/java/javafx/scene/Node.java line 8191:
> 
>> 8189:      */
>> 8190:     private void updateRemovedParentFocus(Node oldParent) {
>> 8191:         if (oldParent != null && focusWithin.get()) {
> 
> I see that you aren't calling `this.focusWithin.set(false)`. Is that because 
> in the case of the node that was removed from its parent, it will have its 
> `focused` property set to false (as a result of it being removed from the 
> scene), which will then set its `focusWithin` to false?

Yes, that's correct. A node that is removed from a scene graph cannot be 
focused, which also means that it can't have focusWithin.

> modules/javafx.graphics/src/main/java/javafx/scene/Scene.java line 4056:
> 
>> 4054: 
>> 4055:         private void setFocusVisible(Node node, boolean focusVisible) {
>> 4056:             Node.FocusPropertyBase property = 
>> (Node.FocusPropertyBase)node.focusVisibleProperty();
> 
> Did you consider using a similar pattern to `ReadOnlyBooleanWrapper` to avoid 
> the cast? Given that an application can't call the set method (either by 
> casting or by using reflection), I don't see a problem with this, so it is 
> just a question.

I removed the cast by making the `Node.focusVisible` field package-private. 
That should make it clearer that the property is actually set from outside the 
`Node` class.

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

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

Reply via email to