On Tue, 11 Jan 2022 14:42:19 GMT, eduardsdv <d...@openjdk.java.net> wrote:
> The NPE occurs when the skinnable is removed from the scene while the popup > is showing. > The MenuButtonSkinBase, when popup becomes hidden, tries to remove Mnemonics > from the scene and runs into NPE. > To avoid NPE a null-check is added to the 'showing' listener. > > Since the mnemonics cannot be removed from the scene in standard way, when > popup becomes hidden. > They are now also removed from the scene, when the skinnable is removed from > it. The fix looks OK, but, a few cleanups are required. modules/javafx.controls/src/main/java/javafx/scene/control/skin/MenuButtonSkinBase.java line 157: > 155: > 156: // We only need to remove the mnemonics from the old > scene, > 157: // they will be added to the new one as soon as the pop > becomes visible again. typo : pop --> popup modules/javafx.controls/src/main/java/javafx/scene/control/skin/MenuButtonSkinBase.java line 250: > 248: @Override protected double computeMinWidth(double height, double > topInset, double rightInset, double bottomInset, double leftInset) { > 249: return leftInset > 250: + label.minWidth(height) Unintended spacing changes are there in computePrefHeight, computePrefWidth, computeMinHeight and computeMinWidth methods. Please revert these unrelated spacing changes. modules/javafx.controls/src/test/java/test/javafx/scene/control/skin/MenuButtonSkinBaseTest.java line 1: > 1: package test.javafx.scene.control.skin; Please add the missing copyright header. ------------- PR: https://git.openjdk.java.net/jfx/pull/713