diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index b80804f2e..fa1b441d9 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/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 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; }