diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
index 80cd60cab..7c1532775 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
@@ -43,6 +43,9 @@ public class SettingsController extends LocalizedFXMLViewController {
@FXML
private TextField portField;
+ @FXML
+ private Label useIpv6Label;
+
@FXML
private CheckBox useIpv6Checkbox;
@@ -55,7 +58,8 @@ public class SettingsController extends LocalizedFXMLViewController {
checkForUpdatesCheckbox.setSelected(settings.isCheckForUpdatesEnabled() && !areUpdatesManagedExternally());
portField.setText(String.valueOf(settings.getPort()));
portField.addEventFilter(KeyEvent.KEY_TYPED, this::filterNumericKeyEvents);
- useIpv6Checkbox.setDisable(!SystemUtils.IS_OS_WINDOWS);
+ useIpv6Label.setVisible(SystemUtils.IS_OS_WINDOWS);
+ useIpv6Checkbox.setVisible(SystemUtils.IS_OS_WINDOWS);
useIpv6Checkbox.setSelected(SystemUtils.IS_OS_WINDOWS && settings.shouldUseIpv6());
versionLabel.setText(String.format(localization.getString("settings.version.label"), applicationVersion().orElse("SNAPSHOT")));
@@ -81,7 +85,7 @@ public class SettingsController extends LocalizedFXMLViewController {
private void portDidChange(String newValue) {
try {
int port = Integer.parseInt(newValue);
- if (port < Settings.MIN_PORT || port > Settings.MAX_PORT) {
+ if (!settings.isPortValid(port)) {
settings.setPort(Settings.DEFAULT_PORT);
} else {
settings.setPort(port);
diff --git a/main/ui/src/main/java/org/cryptomator/ui/settings/Settings.java b/main/ui/src/main/java/org/cryptomator/ui/settings/Settings.java
index 17f7c5b25..6b00aeb41 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/settings/Settings.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/settings/Settings.java
@@ -93,8 +93,8 @@ public class Settings implements Serializable {
}
}
- private boolean isPortValid(int port) {
- return port == DEFAULT_PORT || port >= MIN_PORT && port <= MAX_PORT;
+ public boolean isPortValid(int port) {
+ return port == DEFAULT_PORT || port >= MIN_PORT && port <= MAX_PORT || port == 0;
}
public boolean shouldUseIpv6() {
diff --git a/main/ui/src/main/resources/fxml/settings.fxml b/main/ui/src/main/resources/fxml/settings.fxml
index eebe54528..73f26630f 100644
--- a/main/ui/src/main/resources/fxml/settings.fxml
+++ b/main/ui/src/main/resources/fxml/settings.fxml
@@ -38,7 +38,7 @@
-
+