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 32f2aea47..6f754b4c1 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 @@ -73,7 +73,7 @@ public class UnlockController implements FxController { if (keychainAccess.isPresent()) { loadStoredPassword(); } else { - savePassword.setDisable(true); + savePassword.setSelected(false); } unlockButtonDisabled.bind(vault.stateProperty().isNotEqualTo(VaultState.LOCKED).or(passwordField.textProperty().isEmpty())); } @@ -91,10 +91,8 @@ public class UnlockController implements FxController { Task task = vaultService.createUnlockTask(vault, password); passwordField.setDisable(true); - savePassword.setDisable(true); task.setOnSucceeded(event -> { passwordField.setDisable(false); - savePassword.setDisable(!keychainAccess.isPresent()); if (keychainAccess.isPresent() && savePassword.isSelected()) { try { keychainAccess.get().storePassphrase(vault.getId(), password); @@ -108,7 +106,6 @@ public class UnlockController implements FxController { }); task.setOnFailed(event -> { passwordField.setDisable(false); - savePassword.setDisable(!keychainAccess.isPresent()); if (task.getException() instanceof InvalidPassphraseException) { Animations.createShakeWindowAnimation(window).play(); passwordField.selectAll(); @@ -190,4 +187,8 @@ public class UnlockController implements FxController { public boolean isUnlockButtonDisabled() { return unlockButtonDisabled.get(); } + + public boolean isKeychainAccessAvailable() { + return keychainAccess.isPresent(); + } } diff --git a/main/ui/src/main/resources/fxml/unlock.fxml b/main/ui/src/main/resources/fxml/unlock.fxml index 24f636999..e2b2217ff 100644 --- a/main/ui/src/main/resources/fxml/unlock.fxml +++ b/main/ui/src/main/resources/fxml/unlock.fxml @@ -22,7 +22,7 @@ - +