MenuItem: paint the selected icon when the item is selected

This commit is contained in:
Emmanuel Bourg
2021-11-03 18:04:01 +01:00
parent 5f6013edd4
commit 6b880af447

View File

@@ -35,6 +35,8 @@ import javax.swing.Icon;
import javax.swing.JMenu; import javax.swing.JMenu;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.KeyStroke; import javax.swing.KeyStroke;
import javax.swing.MenuElement;
import javax.swing.MenuSelectionManager;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.UIManager; import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicHTML; import javax.swing.plaf.basic.BasicHTML;
@@ -468,6 +470,17 @@ debug*/
if( !menuItem.isEnabled() ) if( !menuItem.isEnabled() )
return menuItem.getDisabledIcon(); 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() ) { if( menuItem.getModel().isPressed() && menuItem.isArmed() ) {
Icon pressedIcon = menuItem.getPressedIcon(); Icon pressedIcon = menuItem.getPressedIcon();
if( pressedIcon != null ) if( pressedIcon != null )