diff --git a/pom.xml b/pom.xml
index c56af2617..fa598e5d9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
2.1.0-rc1
2.4.4
- 1.1.1
+ 1.2.0
1.1.2
1.1.2
1.1.0
diff --git a/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java b/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java
index 2d0699064..e8fbc570e 100644
--- a/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java
+++ b/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java
@@ -30,6 +30,7 @@ public class AwtTrayMenuController implements TrayMenuController {
private static final Logger LOG = LoggerFactory.getLogger(AwtTrayMenuController.class);
private final PopupMenu menu = new PopupMenu();
+ private TrayIcon trayIcon;
@CheckAvailability
public static boolean isAvailable() {
@@ -39,7 +40,7 @@ public class AwtTrayMenuController implements TrayMenuController {
@Override
public void showTrayIcon(byte[] rawImageData, Runnable defaultAction, String tooltip) throws TrayMenuException {
var image = Toolkit.getDefaultToolkit().createImage(rawImageData);
- var trayIcon = new TrayIcon(image, tooltip, menu);
+ trayIcon = new TrayIcon(image, tooltip, menu);
trayIcon.setImageAutoSize(true);
if (SystemUtils.IS_OS_WINDOWS) {
@@ -62,15 +63,18 @@ public class AwtTrayMenuController implements TrayMenuController {
@Override
- public void onBeforeShow(Runnable listener) {
- SystemTray systemTray = SystemTray.getSystemTray();
- TrayIcon trayIcon = systemTray.getTrayIcons()[0];
- trayIcon.addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent e) {
- listener.run();
- }
- });
+ public void onBeforeOpenMenu(Runnable listener) {
+ try {
+ this.trayIcon.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ listener.run();
+ }
+ });
+ } catch (Exception e) {
+ throw new IllegalStateException("Tray icon not found.", e);
+ }
+
}
private void addChildren(Menu menu, List items) {
diff --git a/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java
index 358e76ed4..fc7c344fd 100644
--- a/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java
+++ b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java
@@ -68,7 +68,7 @@ public class TrayMenuBuilder {
try (var image = getClass().getResourceAsStream(SystemUtils.IS_OS_MAC_OSX ? TRAY_ICON_MAC : TRAY_ICON)) {
trayMenu.showTrayIcon(image.readAllBytes(), this::showMainWindow, "Cryptomator");
- trayMenu.onBeforeShow(() -> {
+ trayMenu.onBeforeOpenMenu(() -> {
for (Vault vault : vaults) {
VaultListManager.redetermineVaultState(vault);
}