From 3b80b126edc2b4822e8544371f46a3533961beb2 Mon Sep 17 00:00:00 2001 From: nathan Date: Wed, 25 Jan 2017 23:03:05 +0100 Subject: [PATCH] Fixed issue on windows/swing where menu entries with no icon are the wrong size. --- src/dorkbox/systemTray/swingUI/SwingMenuItem.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/dorkbox/systemTray/swingUI/SwingMenuItem.java b/src/dorkbox/systemTray/swingUI/SwingMenuItem.java index fe57b9f..d592c9c 100644 --- a/src/dorkbox/systemTray/swingUI/SwingMenuItem.java +++ b/src/dorkbox/systemTray/swingUI/SwingMenuItem.java @@ -25,19 +25,31 @@ import javax.swing.JMenuItem; import dorkbox.systemTray.MenuItem; import dorkbox.systemTray.SystemTray; import dorkbox.systemTray.peer.MenuItemPeer; +import dorkbox.systemTray.util.ImageUtils; import dorkbox.util.SwingUtil; class SwingMenuItem implements MenuItemPeer { + // necessary to have the correct scaling + padding for the menu entries. + private static ImageIcon transparentIcon; + private final SwingMenu parent; private final JMenuItem _native = new AdjustedJMenuItem(); private volatile ActionListener swingCallback; + // this is ALWAYS called on the EDT. SwingMenuItem(final SwingMenu parent) { this.parent = parent; parent._native.add(_native); + + if (transparentIcon == null) { + File uncheckedFile = ImageUtils.getTransparentImage(ImageUtils.ENTRY_SIZE); + transparentIcon = new ImageIcon(uncheckedFile.getAbsolutePath()); + } + + _native.setIcon(transparentIcon); } @Override @@ -53,7 +65,7 @@ class SwingMenuItem implements MenuItemPeer { _native.setIcon(origIcon); } else { - _native.setIcon(null); + _native.setIcon(transparentIcon); } } });