From aee88445580da34c066fff66930993a7fbd60d9d Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 22 Jan 2025 16:25:56 +0100 Subject: [PATCH] Fixes #3698 --- src/main/java/org/cryptomator/ui/dialogs/Dialogs.java | 11 +++++++---- .../java/org/cryptomator/ui/dialogs/SimpleDialog.java | 7 +++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/dialogs/Dialogs.java b/src/main/java/org/cryptomator/ui/dialogs/Dialogs.java index b6066b655..5107fe740 100644 --- a/src/main/java/org/cryptomator/ui/dialogs/Dialogs.java +++ b/src/main/java/org/cryptomator/ui/dialogs/Dialogs.java @@ -2,31 +2,34 @@ package org.cryptomator.ui.dialogs; import org.cryptomator.common.settings.Settings; import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.StageFactory; import org.cryptomator.ui.controls.FontAwesome5Icon; +import org.cryptomator.ui.fxapp.FxApplicationScoped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import javax.inject.Singleton; import javafx.collections.ObservableList; import javafx.stage.Stage; import java.util.ResourceBundle; import java.util.function.Consumer; -@Singleton +@FxApplicationScoped public class Dialogs { private final ResourceBundle resourceBundle; + private final StageFactory stageFactory; @Inject - public Dialogs(ResourceBundle resourceBundle) { + public Dialogs(ResourceBundle resourceBundle, StageFactory stageFactory) { this.resourceBundle = resourceBundle; + this.stageFactory = stageFactory; } private static final Logger LOG = LoggerFactory.getLogger(Dialogs.class); private SimpleDialog.Builder createDialogBuilder() { - return new SimpleDialog.Builder(resourceBundle); + return new SimpleDialog.Builder(resourceBundle, stageFactory); } public SimpleDialog.Builder prepareRemoveVaultDialog(Stage window, Vault vault, ObservableList vaults) { diff --git a/src/main/java/org/cryptomator/ui/dialogs/SimpleDialog.java b/src/main/java/org/cryptomator/ui/dialogs/SimpleDialog.java index d2d60d297..43392e20a 100644 --- a/src/main/java/org/cryptomator/ui/dialogs/SimpleDialog.java +++ b/src/main/java/org/cryptomator/ui/dialogs/SimpleDialog.java @@ -2,6 +2,7 @@ package org.cryptomator.ui.dialogs; import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlLoaderFactory; +import org.cryptomator.ui.common.StageFactory; import org.cryptomator.ui.controls.FontAwesome5Icon; import javafx.scene.Scene; @@ -22,7 +23,7 @@ public class SimpleDialog { SimpleDialog(Builder builder) throws IOException { this.resourceBundle = builder.resourceBundle; - dialogStage = new Stage(); + dialogStage = builder.stageFactory.create(); dialogStage.initOwner(builder.owner); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.setTitle(resolveText(builder.titleKey, builder.titleArgs)); @@ -60,6 +61,7 @@ public class SimpleDialog { private Stage owner; private final ResourceBundle resourceBundle; + private final StageFactory stageFactory; private String titleKey; private String[] titleArgs; private String messageKey; @@ -71,8 +73,9 @@ public class SimpleDialog { private Consumer okAction = Stage::close; private Consumer cancelAction = Stage::close; - public Builder(ResourceBundle resourceBundle) { + public Builder(ResourceBundle resourceBundle, StageFactory stageFactory) { this.resourceBundle = resourceBundle; + this.stageFactory = stageFactory; } public Builder setOwner(Stage owner) {