Forráskód Böngészése

cancel unlock workflow, if closing window with shortcut

Sebastian Stenzel 4 éve
szülő
commit
490d1b8f87

+ 9 - 4
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() {