From bc7c68ebe42ddb0b849e51b9e343e226db8bdbfa Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Mon, 17 Oct 2022 16:58:34 +0200 Subject: [PATCH] MenuBar: fixed NPE in `FlatMenuItemRenderer.getTopLevelFont()` if menu item does not have a parent (issue #600; regression since implementing #589 in FlatLaf 2.5; commit f6c5db07f2aad4a5964936b18718eee570c8a3aa) --- CHANGELOG.md | 3 +++ .../java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 838c88250..08e88ec8e 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 1f556a850..0e454b708 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 @@ protected boolean isUnderlineSelection() { 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() {