RFR: 8244418: MenuBar: IOOB exception on requestFocus on empty bar

Jeanette Winzenburg fastegal at openjdk.java.net
Fri May 8 13:54:58 UTC 2020


On Fri, 8 May 2020 12:21:48 GMT, Ajit Ghaisas <aghaisas at openjdk.org> wrote:

> Issue :
> https://bugs.openjdk.java.net/browse/JDK-8244418
> 
> Root Cause :
> Incorrect assumption about menu list size.
> 
> Fix :
> Added check for empty menu list before trying to access it.
> 
> Test :
> Added a unit test that fails before fix and passes after it.

looks good - just two inline questions :)

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

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?

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

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


More information about the openjfx-dev mailing list