From 6b880af447c8f903c76e2f7bc4e21fabd409f403 Mon Sep 17 00:00:00 2001 From: Emmanuel Bourg Date: Wed, 3 Nov 2021 18:04:01 +0100 Subject: [PATCH] MenuItem: paint the selected icon when the item is selected --- .../formdev/flatlaf/ui/FlatMenuItemRenderer.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 7bb7dee5..2f49f8c7 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 @@ -35,6 +35,8 @@ import javax.swing.Icon; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.KeyStroke; +import javax.swing.MenuElement; +import javax.swing.MenuSelectionManager; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.plaf.basic.BasicHTML; @@ -468,6 +470,17 @@ debug*/ if( !menuItem.isEnabled() ) return menuItem.getDisabledIcon(); + MenuSelectionManager msm = MenuSelectionManager.defaultManager(); + if( msm != null ) { + MenuElement[] path = msm.getSelectedPath(); + MenuElement selectedElement = path.length > 0 ? path[path.length - 1] : null; + if( menuItem == selectedElement ) { + Icon selectedIcon = menuItem.getSelectedIcon(); + if( selectedIcon != null ) + return selectedIcon; + } + } + if( menuItem.getModel().isPressed() && menuItem.isArmed() ) { Icon pressedIcon = menuItem.getPressedIcon(); if( pressedIcon != null )