No longer uses static sizes for tray size

This commit is contained in:
nathan 2017-05-14 14:49:34 +02:00
parent 52fc2c3a4a
commit c4b27add55

View File

@ -63,8 +63,7 @@ public
class SystemTrayFixes { class SystemTrayFixes {
// oh my. Java likes to think that ALL windows tray icons are 16x16.... Lets fix that! // oh my. Java likes to think that ALL windows tray icons are 16x16.... Lets fix that!
// https://stackoverflow.com/questions/16378886/java-trayicon-right-click-disabled-on-mac-osx/35919788#35919788 public static void fixWindows(int trayIconSize) {
public static void fixWindows() {
String vendor = System.getProperty("java.vendor").toLowerCase(Locale.US); String vendor = System.getProperty("java.vendor").toLowerCase(Locale.US);
// spaces at the end to make sure we check for words // spaces at the end to make sure we check for words
if (!(vendor.contains("sun ") || vendor.contains("oracle "))) { if (!(vendor.contains("sun ") || vendor.contains("oracle "))) {
@ -112,7 +111,7 @@ class SystemTrayFixes {
trayClass.getConstructors()[0].setModifiers(trayClass.getConstructors()[0].getModifiers() & javassist.Modifier.PUBLIC); trayClass.getConstructors()[0].setModifiers(trayClass.getConstructors()[0].getModifiers() & javassist.Modifier.PUBLIC);
CtMethod ctMethodGet = trayClass.getDeclaredMethod("getTrayIconSize"); CtMethod ctMethodGet = trayClass.getDeclaredMethod("getTrayIconSize");
ctMethodGet.setBody("{" + ctMethodGet.setBody("{" +
"return new java.awt.Dimension(" + ImageUtils.TRAY_SIZE + ", " + ImageUtils.TRAY_SIZE + ");" + "return new java.awt.Dimension(" + trayIconSize + ", " + trayIconSize + ");" +
"}"); "}");
trayBytes = trayClass.toBytecode(); trayBytes = trayClass.toBytecode();
@ -123,7 +122,7 @@ class SystemTrayFixes {
CtMethod ctMethodCreate = trayIconClass.getDeclaredMethod("createNativeImage"); CtMethod ctMethodCreate = trayIconClass.getDeclaredMethod("createNativeImage");
CtMethod ctMethodUpdate = trayIconClass.getDeclaredMethod("updateNativeImage"); CtMethod ctMethodUpdate = trayIconClass.getDeclaredMethod("updateNativeImage");
int TRAY_MASK = (ImageUtils.TRAY_SIZE * ImageUtils.TRAY_SIZE) / 8; int TRAY_MASK = (trayIconSize * trayIconSize) / 8;
ctMethodCreate.setBody("{" + ctMethodCreate.setBody("{" +
"java.awt.image.BufferedImage bufferedImage = $1;" + "java.awt.image.BufferedImage bufferedImage = $1;" +
@ -192,10 +191,10 @@ class SystemTrayFixes {
BootStrapClassLoader.defineClass(trayIconBytes); BootStrapClassLoader.defineClass(trayIconBytes);
if (SystemTray.DEBUG) { if (SystemTray.DEBUG) {
logger.debug("Successfully changed tray icon size to: {}", ImageUtils.TRAY_SIZE); logger.debug("Successfully changed tray icon size to: {}", trayIconSize);
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("Error setting tray icon size to: {}", ImageUtils.TRAY_SIZE, e); logger.error("Error setting tray icon size to: {}", trayIconSize, e);
} }
} }