Browse Source

if mainWindow is closed without tray menu, terminate app

Armin Schrenk 1 month ago
parent
commit
e81bbe197b
1 changed files with 12 additions and 1 deletions
  1. 12 1
      src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java

+ 12 - 1
src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java

@@ -1,6 +1,7 @@
 package org.cryptomator.ui.mainwindow;
 
 import dagger.Binds;
+import dagger.Lazy;
 import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
@@ -14,9 +15,11 @@ import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.common.StageFactory;
 import org.cryptomator.ui.common.StageInitializer;
 import org.cryptomator.ui.error.ErrorComponent;
+import org.cryptomator.ui.fxapp.FxApplicationTerminator;
 import org.cryptomator.ui.fxapp.PrimaryStage;
 import org.cryptomator.ui.migration.MigrationComponent;
 import org.cryptomator.ui.stats.VaultStatisticsComponent;
+import org.cryptomator.ui.traymenu.TrayMenuComponent;
 import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent;
 
 import javax.inject.Named;
@@ -35,11 +38,19 @@ abstract class MainWindowModule {
 	@Provides
 	@MainWindow
 	@MainWindowScoped
-	static Stage provideMainWindow(@PrimaryStage Stage stage, StageInitializer initializer) {
+	static Stage provideMainWindow(@PrimaryStage Stage stage, StageInitializer initializer, FxApplicationTerminator terminator, Lazy<TrayMenuComponent> trayMenu) {
 		initializer.accept(stage);
 		stage.setTitle("Cryptomator");
 		stage.setMinWidth(650);
 		stage.setMinHeight(498);
+		stage.setOnCloseRequest(e -> {
+			if (!trayMenu.get().isInitialized()) {
+				terminator.terminate();
+				e.consume();
+			} else {
+				stage.close();
+			}
+		});
 		return stage;
 	}