diff --git a/CHANGELOG.md b/CHANGELOG.md index 838c8825..08e88ec8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ FlatLaf Change Log - ComboBox and Spinner: Fixed missing arrow buttons if preferred height is zero. Minimum width of arrow buttons is 3/4 of default width. +- MenuBar: Fixed NPE in `FlatMenuItemRenderer.getTopLevelFont()` if menu item + does not have a parent. (issue #600; regression since implementing #589 in + FlatLaf 2.5) - TabbedPane: Switch and close tabs on left mouse click only. (PR #595) - ScrollBar: Show "pressed" feedback on track/thumb only for left mouse button. If absolute positioning is enabled (the default), then also for middle mouse diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java index 1f556a85..0e454b70 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java @@ -500,7 +500,11 @@ debug*/ private Font getTopLevelFont() { Font font = menuItem.getFont(); - return (font != menuFont) ? font : menuItem.getParent().getFont(); + // menu item parent may be null if JMenu.isTopLevelMenu() is overridden + // and does not check parent (e.g. com.jidesoft.swing.JideMenu.isTopLevelMenu()) + return (font != menuFont || menuItem.getParent() == null) + ? font + : menuItem.getParent().getFont(); } private Icon getIconForPainting() {