Skip to content

Commit

Permalink
8241710: NullPointerException while entering empty submenu with "arro…
Browse files Browse the repository at this point in the history
…w right"

Reviewed-by: fastegal, kcr
  • Loading branch information
aghaisas committed Apr 8, 2020
1 parent 470c7d0 commit 231879a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -650,6 +650,11 @@ private void processRightKey(KeyEvent ke) {

private void showMenu(Menu menu) {
menu.show();

if (submenu == null) {
return;
}

// request focus on the first item of the submenu after it is shown
ContextMenuContent cmContent = (ContextMenuContent)submenu.getSkin().getNode();
if (cmContent != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -452,6 +452,22 @@ private ContextMenu createContextMenuAndShowSubMenu() {
subMenuItem1, focusedItem);
}

@Test public void test_emptySubMenu_rightKeyDoesNothing() {
Menu testMenu = new Menu("Menu1");
ContextMenu testCM = new ContextMenu();

testCM.getItems().addAll(testMenu);
testCM.show(anchorBtn, Side.RIGHT, 0, 0);
assertNotNull(getShowingMenuContent(testCM));

// Go to testMenu
pressDownKey(testCM);

// testMenu does not have any subMenu - try to open it
// this used to casue NPE - fixed in JDK-8241710
pressRightKey(testCM);
}

@Test public void test_navigateSubMenu_leftKeyClosesSubMenu() {
ContextMenu cm = createContextMenuAndShowSubMenu();

Expand Down

0 comments on commit 231879a

Please sign in to comment.