[Rev 01] RFR: 8244418: MenuBar: IOOB exception on requestFocus on empty bar

Ajit Ghaisas aghaisas at openjdk.java.net
Tue May 12 12:27:12 UTC 2020


On Fri, 8 May 2020 13:51:34 GMT, Jeanette Winzenburg <fastegal at openjdk.org> wrote:

>> Ajit Ghaisas has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   review_fixes
>
> modules/javafx.controls/src/main/java/javafx/scene/control/skin/MenuBarSkin.java line 485:
> 
>> 484:         }
>> 485:
>> 486:         if (focusedMenu != null && focusedMenuIndex != -1) {
> 
> don't quite understand why this change is necessary? The guard in the listener seems to be enough, at least the test
> passes without this. If it's needed to fix another potentially breaking path to this, would it be possible to add a
> test method that fails/passes before/after?

This was the place where exception was occurring. Hence, I added this check.
When I ran against the test, I still got the exception at caller lambda. I added that check later.
Wanted to remove this check - but simple code scan revealed this method gets called from engine.addTraverseListener()
listener with index = 0. Hence, I have kept this check. Covering this scenario in test seems tough.

> modules/javafx.controls/src/main/java/javafx/scene/control/skin/MenuBarSkin.java line 307:
> 
>> 306:                 unSelectMenus();
>> 307:                 if (!container.getChildren().isEmpty()) {
>> 308:                     menuModeStart(0);
> 
> wondering whether this would be an appropriate time to simplify the logic a bit: as unSelectMenus is called in both if
> and else block, it could be condensed to
>     unSelectMenus();
>     if (t1 && !container.getChildren().isEmpty()) {
>        ...
>     }
> 
> might overlook something, though

Good suggestion. Fixed.

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

PR: https://git.openjdk.java.net/jfx/pull/216


More information about the openjfx-dev mailing list