From 41dd0acfa3fbe7f6cc702dbdf885df4a6d574277 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Sun, 26 Apr 2020 11:24:49 +0200 Subject: [PATCH] Menus: use disabled and pressed icons (issue #3) --- .../flatlaf/ui/FlatMenuItemRenderer.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) 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 c059438c..cad0abf6 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 @@ -214,7 +214,7 @@ debug*/ paintBackground( g, selectionBackground ); if( !isTopLevelMenu ) - paintIcon( g, iconRect, getIcon() ); + paintIcon( g, iconRect, getIconForPainting() ); paintText( g, textRect, menuItem.getText(), selectionForeground, disabledForeground ); paintAccelerator( g, accelRect, getAcceleratorText(), acceleratorForeground, acceleratorSelectionForeground, disabledForeground ); if( !isTopLevelMenu ) @@ -304,6 +304,26 @@ debug*/ return (checkIcon != null) ? checkIcon : menuItem.getIcon(); } + private Icon getIconForPainting() { + if( checkIcon != null ) + return checkIcon; + + Icon icon = menuItem.getIcon(); + if( icon == null ) + return null; + + if( !menuItem.isEnabled() ) + return menuItem.getDisabledIcon(); + + if( menuItem.getModel().isPressed() && menuItem.isArmed() ) { + Icon pressedIcon = menuItem.getPressedIcon(); + if( pressedIcon != null ) + return pressedIcon; + } + + return icon; + } + private Dimension getIconSize() { Icon icon = getIcon(); int iconWidth = (icon != null) ? icon.getIconWidth() : 0;