diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java index 5460cc149..674b16142 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java @@ -31,6 +31,7 @@ import javafx.scene.image.ImageView; import javafx.scene.transform.Rotate; import javafx.scene.transform.Translate; import javafx.stage.Stage; +import javafx.stage.WindowEvent; import javafx.util.Duration; import java.util.Arrays; import java.util.Optional; @@ -78,7 +79,7 @@ public class UnlockController implements FxController { this.userInteractionDisabled = passwordEntryLock.awaitingInteraction().not(); this.unlockButtonDisabled = new SimpleBooleanProperty(); this.vaultName = WeakBindings.bindString(vault.displayNameProperty()); - this.window.setOnCloseRequest(windowEvent -> cancel()); + this.window.setOnHiding(this::windowClosed); } @FXML @@ -128,14 +129,18 @@ public class UnlockController implements FxController { passwordEntryLock.awaitingInteraction().addListener(observable -> stopUnlockAnimation()); } - @FXML public void cancel() { - LOG.debug("Unlock canceled by user."); window.close(); - passwordEntryLock.interacted(UnlockModule.PasswordEntry.CANCELED); } + private void windowClosed(WindowEvent windowEvent) { + // if not already interacted, mark this workflow as cancelled: + if (passwordEntryLock.awaitingInteraction().get()) { + LOG.debug("Unlock canceled by user."); + passwordEntryLock.interacted(UnlockModule.PasswordEntry.CANCELED); + } + } @FXML public void unlock() {