RFR: 8330304: MenuBar: Invisible Menu works incorrectly with keyboard arrows [v2]

Andy Goryachev angorya at openjdk.org
Fri May 31 15:17:20 UTC 2024


On Fri, 31 May 2024 12:35:53 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:

>> Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   review comments
>
> modules/javafx.controls/src/main/java/javafx/scene/control/skin/MenuBarSkin.java line 735:
> 
>> 733:     // package protected for testing purposes
>> 734:     MenuBarButton menuBarButtonAt(int i) {
>> 735:         if (i < container.getChildren().size()) {
> 
> This method throws `IndexOutOfBoundsException` if the index is negative, but returns `null` if the index is larger than the collection size. None of the callers account for this, so we'd just get `NullPointerException` at the call sites.
> 
> Since you touched this method, I suggest replacing the implementation with
> 
> MenuBarButton menuBarButtonAt(int i) {
>     return (MenuBarButton)container.getChildren().get(i);
> }

yes, the suggested change is safe: the product code always guards against invalid indexes, while the test code always expects a non-null return value.

the only time where it might backfire is if a (new) test sets up an empty menu bar.  but we don't have such a test.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1467#discussion_r1622575628


More information about the openjfx-dev mailing list