From 396b541cd249a98d0cc9b368857c16a1ba863d46 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 15:36:10 +0200 Subject: [PATCH 01/22] safe position settings --- .../cryptomator/common/settings/Settings.java | 25 +++++++++++++++++++ .../common/settings/SettingsJsonAdapter.java | 10 ++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java index e4cb9b8f7..5d2cd7c22 100644 --- a/src/main/java/org/cryptomator/common/settings/Settings.java +++ b/src/main/java/org/cryptomator/common/settings/Settings.java @@ -59,6 +59,11 @@ public class Settings { private final StringProperty licenseKey = new SimpleStringProperty(DEFAULT_LICENSE_KEY); private final BooleanProperty showMinimizeButton = new SimpleBooleanProperty(DEFAULT_SHOW_MINIMIZE_BUTTON); private final BooleanProperty showTrayIcon; + private final IntegerProperty windowXPosition = new SimpleIntegerProperty(); + private final IntegerProperty windowYPosition = new SimpleIntegerProperty(); + private final IntegerProperty windowWidth = new SimpleIntegerProperty(); + private final IntegerProperty windowHeight = new SimpleIntegerProperty(); + private Consumer saveCmd; @@ -83,6 +88,10 @@ public class Settings { licenseKey.addListener(this::somethingChanged); showMinimizeButton.addListener(this::somethingChanged); showTrayIcon.addListener(this::somethingChanged); + windowXPosition.addListener(this::somethingChanged); + windowYPosition.addListener(this::somethingChanged); + windowWidth.addListener(this::somethingChanged); + windowHeight.addListener(this::somethingChanged); } void setSaveCmd(Consumer saveCmd) { @@ -158,4 +167,20 @@ public class Settings { public BooleanProperty showTrayIcon() { return showTrayIcon; } + + public IntegerProperty windowXPositionProperty() { + return windowXPosition; + } + + public IntegerProperty windowYPositionProperty() { + return windowYPosition; + } + + public IntegerProperty windowWidthProperty() { + return windowWidth; + } + + public IntegerProperty windowHeightProperty() { + return windowHeight; + } } diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index 5bcb5f3d7..f390f0b84 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -52,6 +52,11 @@ public class SettingsJsonAdapter extends TypeAdapter { out.name("licenseKey").value(value.licenseKey().get()); out.name("showMinimizeButton").value(value.showMinimizeButton().get()); out.name("showTrayIcon").value(value.showTrayIcon().get()); + out.name("windowXPosition").value((value.windowXPositionProperty().get())); + out.name("windowYPosition").value((value.windowYPositionProperty().get())); + out.name("windowWidth").value((value.windowWidthProperty().get())); + out.name("windowHeight").value((value.windowHeightProperty().get())); + out.endObject(); } @@ -86,6 +91,11 @@ public class SettingsJsonAdapter extends TypeAdapter { case "licenseKey" -> settings.licenseKey().set(in.nextString()); case "showMinimizeButton" -> settings.showMinimizeButton().set(in.nextBoolean()); case "showTrayIcon" -> settings.showTrayIcon().set(in.nextBoolean()); + case "windowXPosition" -> settings.windowXPositionProperty().set(in.nextInt()); + case "windowYPosition" -> settings.windowYPositionProperty().set(in.nextInt()); + case "windowWidth" -> settings.windowWidthProperty().set(in.nextInt()); + case "windowHeight"-> settings.windowHeightProperty().set(in.nextInt()); + default -> { LOG.warn("Unsupported vault setting found in JSON: " + name); in.skipValue(); From 4223d15c0896fff11d9b5ec62dc5c584f6bf26ac Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 16:23:46 +0200 Subject: [PATCH 02/22] set stored window size to initial window size --- .../ui/mainwindow/MainWindowModule.java | 39 ++++++++++--------- .../ui/mainwindow/ResizeController.java | 36 ++++++++++++++--- 2 files changed, 50 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 90311bd5b..d1128664e 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -4,27 +4,28 @@ import dagger.Binds; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; -import org.cryptomator.common.vaults.Vault; -import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; -import org.cryptomator.ui.common.FxmlLoaderFactory; -import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.common.FxControllerKey; -import org.cryptomator.ui.common.FxmlFile; -import org.cryptomator.ui.common.FxmlScene; -import org.cryptomator.ui.common.StageFactory; -import org.cryptomator.ui.health.HealthCheckComponent; -import org.cryptomator.ui.migration.MigrationComponent; -import org.cryptomator.ui.removevault.RemoveVaultComponent; -import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; -import org.cryptomator.ui.stats.VaultStatisticsComponent; -import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent; - -import javax.inject.Provider; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.StageStyle; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.common.FxControllerKey; +import org.cryptomator.ui.common.FxmlFile; +import org.cryptomator.ui.common.FxmlLoaderFactory; +import org.cryptomator.ui.common.FxmlScene; +import org.cryptomator.ui.common.StageFactory; +import org.cryptomator.ui.health.HealthCheckComponent; +import org.cryptomator.ui.migration.MigrationComponent; +import org.cryptomator.ui.removevault.RemoveVaultComponent; +import org.cryptomator.ui.stats.VaultStatisticsComponent; +import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; +import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent; + +import javax.inject.Provider; +import java.awt.*; import java.util.Map; import java.util.ResourceBundle; @@ -49,11 +50,11 @@ abstract class MainWindowModule { @MainWindowScoped static Stage provideStage(StageFactory factory) { Stage stage = factory.create(StageStyle.UNDECORATED); - // TODO: min/max values chosen arbitrarily. We might wanna take a look at the user's resolution... + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); stage.setMinWidth(650); stage.setMinHeight(440); - stage.setMaxWidth(1000); - stage.setMaxHeight(700); + stage.setMaxWidth(screenSize.getWidth()); + stage.setMaxHeight(screenSize.getHeight()); stage.setTitle("Cryptomator"); return stage; } diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 908944d68..aad74ffc6 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -1,16 +1,21 @@ package org.cryptomator.ui.mainwindow; -import org.cryptomator.ui.common.FxController; - -import javax.inject.Inject; import javafx.fxml.FXML; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Region; import javafx.stage.Stage; +import org.cryptomator.common.settings.Settings; +import org.cryptomator.ui.common.FxController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; @MainWindow public class ResizeController implements FxController { + private static final Logger LOG = LoggerFactory.getLogger(ResizeController.class); + private final Stage window; public Region tlResizer; @@ -20,14 +25,17 @@ public class ResizeController implements FxController { private double origX, origY, origW, origH; + private final Settings settings; + @Inject - ResizeController(@MainWindow Stage window) { + ResizeController(@MainWindow Stage window, Settings settings) { this.window = window; - // TODO inject settings and save current position and size + this.settings = settings; } @FXML public void initialize() { + LOG.debug("init ResizeController"); tlResizer.setOnMousePressed(this::startResize); trResizer.setOnMousePressed(this::startResize); blResizer.setOnMousePressed(this::startResize); @@ -36,6 +44,11 @@ public class ResizeController implements FxController { trResizer.setOnMouseDragged(this::resizeTopRight); blResizer.setOnMouseDragged(this::resizeBottomLeft); brResizer.setOnMouseDragged(this::resizeBottomRight); + + window.setY(settings.windowYPositionProperty().get()); + window.setX(settings.windowXPositionProperty().get()); + window.setHeight(settings.windowHeightProperty().get()); + window.setWidth(settings.windowWidthProperty().get()); } private void startResize(MouseEvent evt) { @@ -48,21 +61,25 @@ public class ResizeController implements FxController { private void resizeTopLeft(MouseEvent evt) { resizeTop(evt); resizeLeft(evt); + saveSettings(); } private void resizeTopRight(MouseEvent evt) { resizeTop(evt); resizeRight(evt); + saveSettings(); } private void resizeBottomLeft(MouseEvent evt) { resizeBottom(evt); resizeLeft(evt); + saveSettings(); } private void resizeBottomRight(MouseEvent evt) { resizeBottom(evt); resizeRight(evt); + saveSettings(); } private void resizeTop(MouseEvent evt) { @@ -99,4 +116,11 @@ public class ResizeController implements FxController { } } -} + private void saveSettings() { + settings.windowHeightProperty().setValue(window.getHeight()); + settings.windowWidthProperty().setValue(window.getWidth()); + settings.windowYPositionProperty().setValue(window.getY()); + settings.windowXPositionProperty().setValue(window.getX()); + } + +} \ No newline at end of file From b529764eb43f0ca4b28cae1ad682fcd1ac9371fe Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 17:37:15 +0200 Subject: [PATCH 03/22] remove max width and max heigth --- .../java/org/cryptomator/ui/mainwindow/MainWindowModule.java | 2 -- .../java/org/cryptomator/ui/mainwindow/ResizeController.java | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index d1128664e..d16079d7c 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -53,8 +53,6 @@ abstract class MainWindowModule { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); stage.setMinWidth(650); stage.setMinHeight(440); - stage.setMaxWidth(screenSize.getWidth()); - stage.setMaxHeight(screenSize.getHeight()); stage.setTitle("Cryptomator"); return stage; } diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index aad74ffc6..9f8204706 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -48,7 +48,11 @@ public class ResizeController implements FxController { window.setY(settings.windowYPositionProperty().get()); window.setX(settings.windowXPositionProperty().get()); window.setHeight(settings.windowHeightProperty().get()); + //TODO: remove comments + //window.setHeight(settings.windowHeightProperty().get() > window.getMaxHeight() ? window.getMaxHeight() * 0.95 : settings.windowHeightProperty().get()); + window.setWidth(settings.windowWidthProperty().get()); + //window.setWidth(settings.windowWidthProperty().get() > window.getMaxWidth() ? window.getMaxWidth() * 0.95 : settings.windowWidthProperty().get()); } private void startResize(MouseEvent evt) { From 58d65c609f792f7edba8930cd90464ffad274e41 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 17:38:01 +0200 Subject: [PATCH 04/22] set the position on illegal position --- .../ui/mainwindow/ResizeController.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 9f8204706..95138ea97 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -45,14 +45,26 @@ public class ResizeController implements FxController { blResizer.setOnMouseDragged(this::resizeBottomLeft); brResizer.setOnMouseDragged(this::resizeBottomRight); - window.setY(settings.windowYPositionProperty().get()); - window.setX(settings.windowXPositionProperty().get()); window.setHeight(settings.windowHeightProperty().get()); //TODO: remove comments //window.setHeight(settings.windowHeightProperty().get() > window.getMaxHeight() ? window.getMaxHeight() * 0.95 : settings.windowHeightProperty().get()); window.setWidth(settings.windowWidthProperty().get()); //window.setWidth(settings.windowWidthProperty().get() > window.getMaxWidth() ? window.getMaxWidth() * 0.95 : settings.windowWidthProperty().get()); + + + //TODO: define illegalPosition + boolean illegalPosition = false; + if (illegalPosition) { + // if the position is illegal, then the window appears on the main screen in the middle of the window. + window.setY((window.getMaxHeight() - window.getHeight()) / 2); + window.setX((window.getMaxWidth() - window.getWidth()) / 2); + } + else { + window.setX(settings.windowXPositionProperty().get()); + window.setY(settings.windowYPositionProperty().get()); + } + } private void startResize(MouseEvent evt) { From 03eebfe48693f10c26d8b886ba38b4a6f07e90fe Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 18:03:55 +0200 Subject: [PATCH 05/22] add double click on titleBar to min/maximize application --- .../mainwindow/MainWindowTitleController.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index ef050e799..af2eadfe7 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -1,5 +1,12 @@ package org.cryptomator.ui.mainwindow; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.beans.property.ReadOnlyBooleanProperty; +import javafx.fxml.FXML; +import javafx.scene.input.MouseButton; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; import org.cryptomator.common.LicenseHolder; import org.cryptomator.common.settings.Settings; import org.cryptomator.ui.common.FxController; @@ -12,12 +19,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.BooleanBinding; -import javafx.beans.property.ReadOnlyBooleanProperty; -import javafx.fxml.FXML; -import javafx.scene.layout.HBox; -import javafx.stage.Stage; @MainWindowScoped public class MainWindowTitleController implements FxController { @@ -58,6 +59,18 @@ public class MainWindowTitleController implements FxController { titleBar.setOnMousePressed(event -> { xOffset = event.getSceneX(); yOffset = event.getSceneY(); + + }); + titleBar.setOnMouseClicked(event -> { + if (event.getButton().equals(MouseButton.PRIMARY)) { + if (event.getClickCount() == 2) { + if (window.isFullScreen()) { + window.setFullScreen(false); + } else { + window.setFullScreen(true); + } + } + } }); titleBar.setOnMouseDragged(event -> { window.setX(event.getScreenX() - xOffset); From 7df028b0b875effa30c2b1d7e2419934bf5fa94a Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 18:52:55 +0200 Subject: [PATCH 06/22] add top, right, bottom and left resizer --- .../cryptomator/ui/mainwindow/ResizeController.java | 13 +++++++++++++ src/main/resources/fxml/main_window_resize.fxml | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 95138ea97..689e24612 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -22,6 +22,11 @@ public class ResizeController implements FxController { public Region trResizer; public Region blResizer; public Region brResizer; + public Region tResizer; + public Region rResizer; + public Region bResizer; + public Region lResizer; + private double origX, origY, origW, origH; @@ -40,10 +45,18 @@ public class ResizeController implements FxController { trResizer.setOnMousePressed(this::startResize); blResizer.setOnMousePressed(this::startResize); brResizer.setOnMousePressed(this::startResize); + tResizer.setOnMousePressed(this::startResize); + rResizer.setOnMousePressed(this::startResize); + bResizer.setOnMousePressed(this::startResize); + lResizer.setOnMousePressed(this::startResize); tlResizer.setOnMouseDragged(this::resizeTopLeft); trResizer.setOnMouseDragged(this::resizeTopRight); blResizer.setOnMouseDragged(this::resizeBottomLeft); brResizer.setOnMouseDragged(this::resizeBottomRight); + tResizer.setOnMouseDragged(this::resizeTop); + rResizer.setOnMouseDragged(this::resizeRight); + bResizer.setOnMouseDragged(this::resizeBottom); + lResizer.setOnMouseDragged(this::resizeLeft); window.setHeight(settings.windowHeightProperty().get()); //TODO: remove comments diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index b4eb46916..27647c773 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -9,9 +9,18 @@ + + + + + + + + + \ No newline at end of file From 31ca10226359eb2e6eef50e9c36e13411a9fa648 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 19:09:27 +0200 Subject: [PATCH 07/22] update position in settings when moving --- .../ui/mainwindow/MainWindowTitleController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index af2eadfe7..b47616e29 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -76,11 +76,19 @@ public class MainWindowTitleController implements FxController { window.setX(event.getScreenX() - xOffset); window.setY(event.getScreenY() - yOffset); }); + titleBar.setOnMouseReleased(event -> { + saveSettings(); + }); window.setOnCloseRequest(event -> { close(); event.consume(); }); } + //TODO: almost duplicate from ResizeController.class + private void saveSettings() { + settings.windowYPositionProperty().setValue(window.getY()); + settings.windowXPositionProperty().setValue(window.getX()); + } @FXML public void close() { From 957640b1ba206280609e9297d03e78b16782225f Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 24 Aug 2021 19:21:53 +0200 Subject: [PATCH 08/22] block moving and resizing in fullscreen --- .../ui/mainwindow/MainWindowTitleController.java | 2 ++ .../ui/mainwindow/ResizeController.java | 5 +++++ src/main/resources/fxml/main_window_resize.fxml | 16 ++++++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index b47616e29..2e68f66c5 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -73,6 +73,8 @@ public class MainWindowTitleController implements FxController { } }); titleBar.setOnMouseDragged(event -> { + //TODO should it be possible to move the window, when in fullscreen? + if (window.isFullScreen()) return; window.setX(event.getScreenX() - xOffset); window.setY(event.getScreenY() - yOffset); }); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 689e24612..4e6d80187 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -152,4 +152,9 @@ public class ResizeController implements FxController { settings.windowXPositionProperty().setValue(window.getX()); } + public boolean isShowResizingArrows(){ + //If in fullscreen resizing should not be possible + return window.isFullScreen(); + } + } \ No newline at end of file diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index 27647c773..49055610d 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -14,13 +14,13 @@ - - - - - - - - + + + + + + + + \ No newline at end of file From 6b4ea9a9eba94bf1c551619976b65c28f1cabf94 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Wed, 25 Aug 2021 11:31:29 +0200 Subject: [PATCH 09/22] fix fullscreen binding --- .../mainwindow/MainWindowTitleController.java | 2 +- .../ui/mainwindow/ResizeController.java | 19 ++++++++++----- .../resources/fxml/main_window_resize.fxml | 23 +++++++++---------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index 2e68f66c5..bfa050f0b 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -73,7 +73,6 @@ public class MainWindowTitleController implements FxController { } }); titleBar.setOnMouseDragged(event -> { - //TODO should it be possible to move the window, when in fullscreen? if (window.isFullScreen()) return; window.setX(event.getScreenX() - xOffset); window.setY(event.getScreenY() - yOffset); @@ -86,6 +85,7 @@ public class MainWindowTitleController implements FxController { event.consume(); }); } + //TODO: almost duplicate from ResizeController.class private void saveSettings() { settings.windowYPositionProperty().setValue(window.getY()); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 4e6d80187..20c072895 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -1,5 +1,7 @@ package org.cryptomator.ui.mainwindow; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; import javafx.fxml.FXML; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Region; @@ -27,15 +29,17 @@ public class ResizeController implements FxController { public Region bResizer; public Region lResizer; - private double origX, origY, origW, origH; private final Settings settings; + private final BooleanBinding showResizingArrows; + @Inject ResizeController(@MainWindow Stage window, Settings settings) { this.window = window; this.settings = settings; + this.showResizingArrows = Bindings.createBooleanBinding(this::isShowResizingArrows, window.fullScreenProperty()); } @FXML @@ -72,8 +76,7 @@ public class ResizeController implements FxController { // if the position is illegal, then the window appears on the main screen in the middle of the window. window.setY((window.getMaxHeight() - window.getHeight()) / 2); window.setX((window.getMaxWidth() - window.getWidth()) / 2); - } - else { + } else { window.setX(settings.windowXPositionProperty().get()); window.setY(settings.windowYPositionProperty().get()); } @@ -152,9 +155,13 @@ public class ResizeController implements FxController { settings.windowXPositionProperty().setValue(window.getX()); } - public boolean isShowResizingArrows(){ - //If in fullscreen resizing should not be possible - return window.isFullScreen(); + public BooleanBinding showResizingArrowsProperty() { + return showResizingArrows; + } + + public boolean isShowResizingArrows() { + //If in fullscreen resizing should not be possible; + return !window.isFullScreen(); } } \ No newline at end of file diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index 49055610d..ce491b3a6 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -9,18 +9,17 @@ - - - - + + - - - - - - - - + + + + + + + + + \ No newline at end of file From 981902409c71a9e9eb04a6190ae52a95433e5ae5 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 10:33:31 +0200 Subject: [PATCH 10/22] calculate new position on display configuration change --- .../cryptomator/common/settings/Settings.java | 14 ++++-- .../common/settings/SettingsJsonAdapter.java | 4 +- .../ui/mainwindow/ResizeController.java | 47 ++++++++++++------- 3 files changed, 44 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java index 5d2cd7c22..ac15dbe0e 100644 --- a/src/main/java/org/cryptomator/common/settings/Settings.java +++ b/src/main/java/org/cryptomator/common/settings/Settings.java @@ -8,9 +8,6 @@ ******************************************************************************/ package org.cryptomator.common.settings; -import org.apache.commons.lang3.SystemUtils; -import org.cryptomator.common.Environment; - import javafx.beans.Observable; import javafx.beans.property.BooleanProperty; import javafx.beans.property.IntegerProperty; @@ -23,6 +20,9 @@ import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.NodeOrientation; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.common.Environment; + import java.util.function.Consumer; public class Settings { @@ -43,6 +43,8 @@ public class Settings { public static final NodeOrientation DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT; public static final String DEFAULT_LICENSE_KEY = ""; public static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false; + public static final String DEFAULT_DISPLAY_CONFIGURATION = ""; + private final ObservableList directories = FXCollections.observableArrayList(VaultSettings::observables); private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK); @@ -63,6 +65,7 @@ public class Settings { private final IntegerProperty windowYPosition = new SimpleIntegerProperty(); private final IntegerProperty windowWidth = new SimpleIntegerProperty(); private final IntegerProperty windowHeight = new SimpleIntegerProperty(); + private final ObjectProperty displayConfiguration = new SimpleObjectProperty<>(DEFAULT_DISPLAY_CONFIGURATION); private Consumer saveCmd; @@ -92,6 +95,7 @@ public class Settings { windowYPosition.addListener(this::somethingChanged); windowWidth.addListener(this::somethingChanged); windowHeight.addListener(this::somethingChanged); + displayConfiguration.addListener(this::somethingChanged); } void setSaveCmd(Consumer saveCmd) { @@ -183,4 +187,8 @@ public class Settings { public IntegerProperty windowHeightProperty() { return windowHeight; } + + public ObjectProperty displayConfigurationProperty() { + return displayConfiguration; + } } diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index f390f0b84..ee040071a 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -9,13 +9,13 @@ import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; +import javafx.geometry.NodeOrientation; import org.cryptomator.common.Environment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.inject.Singleton; -import javafx.geometry.NodeOrientation; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -56,6 +56,7 @@ public class SettingsJsonAdapter extends TypeAdapter { out.name("windowYPosition").value((value.windowYPositionProperty().get())); out.name("windowWidth").value((value.windowWidthProperty().get())); out.name("windowHeight").value((value.windowHeightProperty().get())); + out.name("displayConfiguration").value((value.displayConfigurationProperty().get())); out.endObject(); } @@ -95,6 +96,7 @@ public class SettingsJsonAdapter extends TypeAdapter { case "windowYPosition" -> settings.windowYPositionProperty().set(in.nextInt()); case "windowWidth" -> settings.windowWidthProperty().set(in.nextInt()); case "windowHeight"-> settings.windowHeightProperty().set(in.nextInt()); + case "displayConfiguration" -> settings.displayConfigurationProperty().set(in.nextString()); default -> { LOG.warn("Unsupported vault setting found in JSON: " + name); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 20c072895..cd943cb19 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -12,6 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import java.awt.*; @MainWindow public class ResizeController implements FxController { @@ -63,24 +64,36 @@ public class ResizeController implements FxController { lResizer.setOnMouseDragged(this::resizeLeft); window.setHeight(settings.windowHeightProperty().get()); - //TODO: remove comments - //window.setHeight(settings.windowHeightProperty().get() > window.getMaxHeight() ? window.getMaxHeight() * 0.95 : settings.windowHeightProperty().get()); - window.setWidth(settings.windowWidthProperty().get()); - //window.setWidth(settings.windowWidthProperty().get() > window.getMaxWidth() ? window.getMaxWidth() * 0.95 : settings.windowWidthProperty().get()); - - //TODO: define illegalPosition - boolean illegalPosition = false; - if (illegalPosition) { - // if the position is illegal, then the window appears on the main screen in the middle of the window. - window.setY((window.getMaxHeight() - window.getHeight()) / 2); - window.setX((window.getMaxWidth() - window.getWidth()) / 2); + if (checkForChangedDisplayConfiguration()) { + //If the position is illegal, then the window appears on the main screen in the middle of the window. + Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); + window.setX((size.getWidth() - window.getWidth()) / 2); + window.setY((size.getHeight() - window.getHeight()) / 2); } else { window.setX(settings.windowXPositionProperty().get()); window.setY(settings.windowYPositionProperty().get()); } + savePositionalSettings(); + } + private boolean checkForChangedDisplayConfiguration(){ + String currentDisplayConfiguration = getMonitorSizes(); + boolean changedConfiguration = !settings.displayConfigurationProperty().get().equals(currentDisplayConfiguration); + if (changedConfiguration) settings.displayConfigurationProperty().setValue(currentDisplayConfiguration); + return changedConfiguration; + } + + private String getMonitorSizes() { + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + GraphicsDevice[] gs = ge.getScreenDevices(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < gs.length; i++) { + DisplayMode dm = gs[i].getDisplayMode(); + sb.append("screenId: " + i + ", " + dm.getWidth() + "x" + dm.getHeight() + "; "); + } + return sb.toString(); } private void startResize(MouseEvent evt) { @@ -93,25 +106,25 @@ public class ResizeController implements FxController { private void resizeTopLeft(MouseEvent evt) { resizeTop(evt); resizeLeft(evt); - saveSettings(); + savePositionalSettings(); } private void resizeTopRight(MouseEvent evt) { resizeTop(evt); resizeRight(evt); - saveSettings(); + savePositionalSettings(); } private void resizeBottomLeft(MouseEvent evt) { resizeBottom(evt); resizeLeft(evt); - saveSettings(); + savePositionalSettings(); } private void resizeBottomRight(MouseEvent evt) { resizeBottom(evt); resizeRight(evt); - saveSettings(); + savePositionalSettings(); } private void resizeTop(MouseEvent evt) { @@ -148,7 +161,7 @@ public class ResizeController implements FxController { } } - private void saveSettings() { + private void savePositionalSettings() { settings.windowHeightProperty().setValue(window.getHeight()); settings.windowWidthProperty().setValue(window.getWidth()); settings.windowYPositionProperty().setValue(window.getY()); @@ -160,7 +173,7 @@ public class ResizeController implements FxController { } public boolean isShowResizingArrows() { - //If in fullscreen resizing should not be possible; + //If in fullscreen resizing is not be possible; return !window.isFullScreen(); } From 72286de9fed73a47a9ab0d46da61a01786f84771 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 10:46:28 +0200 Subject: [PATCH 11/22] minor string rewriting --- .../java/org/cryptomator/ui/mainwindow/ResizeController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index cd943cb19..09b4da885 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -91,7 +91,8 @@ public class ResizeController implements FxController { StringBuilder sb = new StringBuilder(); for (int i = 0; i < gs.length; i++) { DisplayMode dm = gs[i].getDisplayMode(); - sb.append("screenId: " + i + ", " + dm.getWidth() + "x" + dm.getHeight() + "; "); + if(!sb.isEmpty()) sb.append(" "); + sb.append("displayId: " + i + ", " + dm.getWidth() + "x" + dm.getHeight() + ";"); } return sb.toString(); } From 21f45d43f7879792f6fc7c3709982ada2d7bb260 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 11:15:19 +0200 Subject: [PATCH 12/22] remove dead code --- .../java/org/cryptomator/ui/mainwindow/MainWindowModule.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index d16079d7c..993670159 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -25,7 +25,6 @@ import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent; import javax.inject.Provider; -import java.awt.*; import java.util.Map; import java.util.ResourceBundle; @@ -50,7 +49,6 @@ abstract class MainWindowModule { @MainWindowScoped static Stage provideStage(StageFactory factory) { Stage stage = factory.create(StageStyle.UNDECORATED); - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); stage.setMinWidth(650); stage.setMinHeight(440); stage.setTitle("Cryptomator"); From e5f66281c2b23d138fb6c928bd9f8cf61e04a690 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 17:20:53 +0200 Subject: [PATCH 13/22] centering window as before, renaming --- .../ui/mainwindow/MainWindowModule.java | 2 +- .../mainwindow/MainWindowTitleController.java | 7 +-- .../ui/mainwindow/ResizeController.java | 43 ++++++++++++------- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 993670159..3540e876e 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -49,7 +49,7 @@ abstract class MainWindowModule { @MainWindowScoped static Stage provideStage(StageFactory factory) { Stage stage = factory.create(StageStyle.UNDECORATED); - stage.setMinWidth(650); + stage.setMinWidth(550); stage.setMinHeight(440); stage.setTitle("Cryptomator"); return stage; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index bfa050f0b..154d2cefc 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -78,7 +78,7 @@ public class MainWindowTitleController implements FxController { window.setY(event.getScreenY() - yOffset); }); titleBar.setOnMouseReleased(event -> { - saveSettings(); + saveWindowSettings(); }); window.setOnCloseRequest(event -> { close(); @@ -86,10 +86,11 @@ public class MainWindowTitleController implements FxController { }); } - //TODO: almost duplicate from ResizeController.class - private void saveSettings() { + private void saveWindowSettings() { settings.windowYPositionProperty().setValue(window.getY()); settings.windowXPositionProperty().setValue(window.getX()); + settings.windowWidthProperty().setValue(window.getWidth()); + settings.windowHeightProperty().setValue(window.getHeight()); } @FXML diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 09b4da885..90f83ce6f 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -63,24 +63,37 @@ public class ResizeController implements FxController { bResizer.setOnMouseDragged(this::resizeBottom); lResizer.setOnMouseDragged(this::resizeLeft); - window.setHeight(settings.windowHeightProperty().get()); - window.setWidth(settings.windowWidthProperty().get()); - - if (checkForChangedDisplayConfiguration()) { - //If the position is illegal, then the window appears on the main screen in the middle of the window. - Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); - window.setX((size.getWidth() - window.getWidth()) / 2); - window.setY((size.getHeight() - window.getHeight()) / 2); + if (neverTouched()){ + settings.displayConfigurationProperty().setValue(getMonitorSizes()); + return; } else { - window.setX(settings.windowXPositionProperty().get()); - window.setY(settings.windowYPositionProperty().get()); + if (checkForChangedDisplayConfiguration()) { + //If the position is illegal, then the window appears on the main screen in the middle of the window. + Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); + window.setX((size.getWidth() - window.getMinWidth()) / 2); + window.setY((size.getHeight() - window.getMinHeight()) / 2); + window.setWidth(window.getMinWidth()); + window.setHeight(window.getMinHeight()); + } + else { + window.setHeight(settings.windowHeightProperty().get() > window.getMinHeight() ? settings.windowHeightProperty().get() : window.getMinHeight()); + window.setWidth(settings.windowWidthProperty().get() > window.getMinWidth() ? settings.windowWidthProperty().get() : window.getMinWidth()); + window.setX(settings.windowXPositionProperty().get()); + window.setY(settings.windowYPositionProperty().get()); + } } savePositionalSettings(); } + private boolean neverTouched(){ + return (settings.windowHeightProperty().get() == 0) && (settings.windowWidthProperty().get() == 0) && + (settings.windowXPositionProperty().get() == 0) && (settings.windowYPositionProperty().get() == 0); + } + private boolean checkForChangedDisplayConfiguration(){ String currentDisplayConfiguration = getMonitorSizes(); - boolean changedConfiguration = !settings.displayConfigurationProperty().get().equals(currentDisplayConfiguration); + String settingsDisplayConfiguration = settings.displayConfigurationProperty().get(); + boolean changedConfiguration = !settingsDisplayConfiguration.equals(currentDisplayConfiguration); if (changedConfiguration) settings.displayConfigurationProperty().setValue(currentDisplayConfiguration); return changedConfiguration; } @@ -107,25 +120,21 @@ public class ResizeController implements FxController { private void resizeTopLeft(MouseEvent evt) { resizeTop(evt); resizeLeft(evt); - savePositionalSettings(); } private void resizeTopRight(MouseEvent evt) { resizeTop(evt); resizeRight(evt); - savePositionalSettings(); } private void resizeBottomLeft(MouseEvent evt) { resizeBottom(evt); resizeLeft(evt); - savePositionalSettings(); } private void resizeBottomRight(MouseEvent evt) { resizeBottom(evt); resizeRight(evt); - savePositionalSettings(); } private void resizeTop(MouseEvent evt) { @@ -136,6 +145,7 @@ public class ResizeController implements FxController { window.setY(newY); window.setHeight(newH); } + savePositionalSettings(); } private void resizeLeft(MouseEvent evt) { @@ -146,6 +156,7 @@ public class ResizeController implements FxController { window.setX(newX); window.setWidth(newW); } + savePositionalSettings(); } private void resizeBottom(MouseEvent evt) { @@ -153,6 +164,7 @@ public class ResizeController implements FxController { if (newH < window.getMaxHeight() && newH > window.getMinHeight()) { window.setHeight(newH); } + savePositionalSettings(); } private void resizeRight(MouseEvent evt) { @@ -160,6 +172,7 @@ public class ResizeController implements FxController { if (newW < window.getMaxWidth() && newW > window.getMinWidth()) { window.setWidth(newW); } + savePositionalSettings(); } private void savePositionalSettings() { From 903e022d29a4308e92050bd87a54c885337e69b6 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 17:22:11 +0200 Subject: [PATCH 14/22] change from LOG.debug "init..." to LOG.trace --- .../ui/mainwindow/MainWindowController.java | 24 +++++++++---------- .../mainwindow/MainWindowTitleController.java | 2 +- .../ui/mainwindow/ResizeController.java | 2 +- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java index 392671246..bb8dc5ce7 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java @@ -1,5 +1,15 @@ package org.cryptomator.ui.mainwindow; +import javafx.beans.Observable; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.fxml.FXML; +import javafx.scene.input.DragEvent; +import javafx.scene.input.TransferMode; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; @@ -11,20 +21,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import javafx.beans.Observable; -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.ReadOnlyObjectProperty; -import javafx.beans.property.SimpleBooleanProperty; -import javafx.fxml.FXML; -import javafx.scene.input.DragEvent; -import javafx.scene.input.TransferMode; -import javafx.scene.layout.StackPane; -import javafx.stage.Stage; import java.io.File; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.Set; import java.util.stream.Collectors; @@ -55,7 +53,7 @@ public class MainWindowController implements FxController { @FXML public void initialize() { - LOG.debug("init MainWindowController"); + LOG.trace("init MainWindowController"); root.setOnDragEntered(this::handleDragEvent); root.setOnDragOver(this::handleDragEvent); root.setOnDragDropped(this::handleDragEvent); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index 154d2cefc..cff4d54df 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -54,7 +54,7 @@ public class MainWindowTitleController implements FxController { @FXML public void initialize() { - LOG.debug("init MainWindowTitleController"); + LOG.trace("init MainWindowTitleController"); updateChecker.automaticallyCheckForUpdatesIfEnabled(); titleBar.setOnMousePressed(event -> { xOffset = event.getSceneX(); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 90f83ce6f..0d3bca915 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -45,7 +45,7 @@ public class ResizeController implements FxController { @FXML public void initialize() { - LOG.debug("init ResizeController"); + LOG.trace("init ResizeController"); tlResizer.setOnMousePressed(this::startResize); trResizer.setOnMousePressed(this::startResize); blResizer.setOnMousePressed(this::startResize); From 348b015bdc1de66eec4062347aaaea9684583c97 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Thu, 26 Aug 2021 17:56:20 +0200 Subject: [PATCH 15/22] reformat to use fxml to trigger resizing --- .../ui/mainwindow/ResizeController.java | 26 +++++++------------ .../resources/fxml/main_window_resize.fxml | 16 ++++++------ 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 0d3bca915..6b0ac08fd 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -46,22 +46,6 @@ public class ResizeController implements FxController { @FXML public void initialize() { LOG.trace("init ResizeController"); - tlResizer.setOnMousePressed(this::startResize); - trResizer.setOnMousePressed(this::startResize); - blResizer.setOnMousePressed(this::startResize); - brResizer.setOnMousePressed(this::startResize); - tResizer.setOnMousePressed(this::startResize); - rResizer.setOnMousePressed(this::startResize); - bResizer.setOnMousePressed(this::startResize); - lResizer.setOnMousePressed(this::startResize); - tlResizer.setOnMouseDragged(this::resizeTopLeft); - trResizer.setOnMouseDragged(this::resizeTopRight); - blResizer.setOnMouseDragged(this::resizeBottomLeft); - brResizer.setOnMouseDragged(this::resizeBottomRight); - tResizer.setOnMouseDragged(this::resizeTop); - rResizer.setOnMouseDragged(this::resizeRight); - bResizer.setOnMouseDragged(this::resizeBottom); - lResizer.setOnMouseDragged(this::resizeLeft); if (neverTouched()){ settings.displayConfigurationProperty().setValue(getMonitorSizes()); @@ -117,27 +101,33 @@ public class ResizeController implements FxController { origH = window.getHeight(); } + @FXML private void resizeTopLeft(MouseEvent evt) { resizeTop(evt); resizeLeft(evt); } + @FXML private void resizeTopRight(MouseEvent evt) { resizeTop(evt); resizeRight(evt); } + @FXML private void resizeBottomLeft(MouseEvent evt) { resizeBottom(evt); resizeLeft(evt); } + @FXML private void resizeBottomRight(MouseEvent evt) { resizeBottom(evt); resizeRight(evt); } + @FXML private void resizeTop(MouseEvent evt) { + startResize(evt); double newY = evt.getScreenY(); double dy = newY - origY; double newH = origH - dy; @@ -148,7 +138,9 @@ public class ResizeController implements FxController { savePositionalSettings(); } + @FXML private void resizeLeft(MouseEvent evt) { + startResize(evt); double newX = evt.getScreenX(); double dx = newX - origX; double newW = origW - dx; @@ -159,6 +151,7 @@ public class ResizeController implements FxController { savePositionalSettings(); } + @FXML private void resizeBottom(MouseEvent evt) { double newH = evt.getSceneY(); if (newH < window.getMaxHeight() && newH > window.getMinHeight()) { @@ -167,6 +160,7 @@ public class ResizeController implements FxController { savePositionalSettings(); } + @FXML private void resizeRight(MouseEvent evt) { double newW = evt.getSceneX(); if (newW < window.getMaxWidth() && newW > window.getMinWidth()) { diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index ce491b3a6..dea6aea17 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -13,13 +13,13 @@ - - - - - - - - + + + + + + + + \ No newline at end of file From cf633d74d2f6736b9ba4c2ccfbff1750e0cfeb4d Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Mon, 30 Aug 2021 15:16:52 +0200 Subject: [PATCH 16/22] add extra regions to reset to cursor to the default (+coloring the borders red for debugging and testing) --- src/main/resources/fxml/main_window_resize.fxml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index dea6aea17..4338e2f65 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -11,6 +11,7 @@ + @@ -21,5 +22,10 @@ + + + + + \ No newline at end of file From 947344e5bc8e3531054c2def2ba49ff86ea88ce8 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Mon, 30 Aug 2021 17:13:46 +0200 Subject: [PATCH 17/22] remove border color, reduce default cursor size, enforce minWidth of 650 --- .../org/cryptomator/ui/mainwindow/MainWindowModule.java | 2 +- src/main/resources/fxml/main_window.fxml | 2 +- src/main/resources/fxml/main_window_resize.fxml | 9 ++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 3540e876e..993670159 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -49,7 +49,7 @@ abstract class MainWindowModule { @MainWindowScoped static Stage provideStage(StageFactory factory) { Stage stage = factory.create(StageStyle.UNDECORATED); - stage.setMinWidth(550); + stage.setMinWidth(650); stage.setMinHeight(440); stage.setTitle("Cryptomator"); return stage; diff --git a/src/main/resources/fxml/main_window.fxml b/src/main/resources/fxml/main_window.fxml index ff8e65292..91e7512a4 100644 --- a/src/main/resources/fxml/main_window.fxml +++ b/src/main/resources/fxml/main_window.fxml @@ -12,7 +12,7 @@ fx:id="root" fx:controller="org.cryptomator.ui.mainwindow.MainWindowController" styleClass="main-window"> - + diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index 4338e2f65..705271ec3 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -22,10 +22,9 @@ - - - - - + + + + \ No newline at end of file From 560513d7e867a00797ec7f9a3316e0e268f75a01 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Fri, 17 Sep 2021 15:54:45 +0200 Subject: [PATCH 18/22] Rearrange Imports --- .../cryptomator/common/settings/Settings.java | 8 ++--- .../common/settings/SettingsJsonAdapter.java | 4 +-- .../ui/mainwindow/MainWindowController.java | 20 +++++------ .../ui/mainwindow/MainWindowModule.java | 10 +++--- .../mainwindow/MainWindowTitleController.java | 14 ++++---- .../ui/mainwindow/ResizeController.java | 34 ++++++++++--------- .../resources/fxml/main_window_resize.fxml | 16 ++++----- 7 files changed, 54 insertions(+), 52 deletions(-) diff --git a/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java index ac15dbe0e..82f2fb794 100644 --- a/src/main/java/org/cryptomator/common/settings/Settings.java +++ b/src/main/java/org/cryptomator/common/settings/Settings.java @@ -8,6 +8,9 @@ ******************************************************************************/ package org.cryptomator.common.settings; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.common.Environment; + import javafx.beans.Observable; import javafx.beans.property.BooleanProperty; import javafx.beans.property.IntegerProperty; @@ -20,9 +23,6 @@ import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.NodeOrientation; -import org.apache.commons.lang3.SystemUtils; -import org.cryptomator.common.Environment; - import java.util.function.Consumer; public class Settings { @@ -154,7 +154,7 @@ public class Settings { return theme; } - public ObjectProperty keychainProvider() { return keychainProvider; } + public ObjectProperty keychainProvider() {return keychainProvider;} public ObjectProperty userInterfaceOrientation() { return userInterfaceOrientation; diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index ee040071a..6d8d880e6 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -9,13 +9,13 @@ import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; -import javafx.geometry.NodeOrientation; import org.cryptomator.common.Environment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.inject.Singleton; +import javafx.geometry.NodeOrientation; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -95,7 +95,7 @@ public class SettingsJsonAdapter extends TypeAdapter { case "windowXPosition" -> settings.windowXPositionProperty().set(in.nextInt()); case "windowYPosition" -> settings.windowYPositionProperty().set(in.nextInt()); case "windowWidth" -> settings.windowWidthProperty().set(in.nextInt()); - case "windowHeight"-> settings.windowHeightProperty().set(in.nextInt()); + case "windowHeight" -> settings.windowHeightProperty().set(in.nextInt()); case "displayConfiguration" -> settings.displayConfigurationProperty().set(in.nextString()); default -> { diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java index bb8dc5ce7..5d1781e19 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java @@ -1,15 +1,5 @@ package org.cryptomator.ui.mainwindow; -import javafx.beans.Observable; -import javafx.beans.property.BooleanProperty; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.ReadOnlyObjectProperty; -import javafx.beans.property.SimpleBooleanProperty; -import javafx.fxml.FXML; -import javafx.scene.input.DragEvent; -import javafx.scene.input.TransferMode; -import javafx.scene.layout.StackPane; -import javafx.stage.Stage; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; @@ -21,6 +11,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javafx.beans.Observable; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.fxml.FXML; +import javafx.scene.input.DragEvent; +import javafx.scene.input.TransferMode; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; import java.io.File; import java.io.IOException; import java.nio.file.Path; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index 993670159..545a45c04 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -4,11 +4,6 @@ import dagger.Binds; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.SimpleObjectProperty; -import javafx.scene.Scene; -import javafx.stage.Stage; -import javafx.stage.StageStyle; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; import org.cryptomator.ui.common.FxController; @@ -25,6 +20,11 @@ import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent; import javax.inject.Provider; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.scene.Scene; +import javafx.stage.Stage; +import javafx.stage.StageStyle; import java.util.Map; import java.util.ResourceBundle; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index cff4d54df..7a4983159 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -1,12 +1,5 @@ package org.cryptomator.ui.mainwindow; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.BooleanBinding; -import javafx.beans.property.ReadOnlyBooleanProperty; -import javafx.fxml.FXML; -import javafx.scene.input.MouseButton; -import javafx.scene.layout.HBox; -import javafx.stage.Stage; import org.cryptomator.common.LicenseHolder; import org.cryptomator.common.settings.Settings; import org.cryptomator.ui.common.FxController; @@ -19,6 +12,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.beans.property.ReadOnlyBooleanProperty; +import javafx.fxml.FXML; +import javafx.scene.input.MouseButton; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; @MainWindowScoped public class MainWindowTitleController implements FxController { diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 6b0ac08fd..9e9377c44 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -1,18 +1,22 @@ package org.cryptomator.ui.mainwindow; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.BooleanBinding; -import javafx.fxml.FXML; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.Region; -import javafx.stage.Stage; import org.cryptomator.common.settings.Settings; import org.cryptomator.ui.common.FxController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import java.awt.*; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.fxml.FXML; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.Region; +import javafx.stage.Stage; +import java.awt.Dimension; +import java.awt.DisplayMode; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Toolkit; @MainWindow public class ResizeController implements FxController { @@ -47,7 +51,7 @@ public class ResizeController implements FxController { public void initialize() { LOG.trace("init ResizeController"); - if (neverTouched()){ + if (neverTouched()) { settings.displayConfigurationProperty().setValue(getMonitorSizes()); return; } else { @@ -58,8 +62,7 @@ public class ResizeController implements FxController { window.setY((size.getHeight() - window.getMinHeight()) / 2); window.setWidth(window.getMinWidth()); window.setHeight(window.getMinHeight()); - } - else { + } else { window.setHeight(settings.windowHeightProperty().get() > window.getMinHeight() ? settings.windowHeightProperty().get() : window.getMinHeight()); window.setWidth(settings.windowWidthProperty().get() > window.getMinWidth() ? settings.windowWidthProperty().get() : window.getMinWidth()); window.setX(settings.windowXPositionProperty().get()); @@ -69,12 +72,11 @@ public class ResizeController implements FxController { savePositionalSettings(); } - private boolean neverTouched(){ - return (settings.windowHeightProperty().get() == 0) && (settings.windowWidthProperty().get() == 0) && - (settings.windowXPositionProperty().get() == 0) && (settings.windowYPositionProperty().get() == 0); + private boolean neverTouched() { + return (settings.windowHeightProperty().get() == 0) && (settings.windowWidthProperty().get() == 0) && (settings.windowXPositionProperty().get() == 0) && (settings.windowYPositionProperty().get() == 0); } - private boolean checkForChangedDisplayConfiguration(){ + private boolean checkForChangedDisplayConfiguration() { String currentDisplayConfiguration = getMonitorSizes(); String settingsDisplayConfiguration = settings.displayConfigurationProperty().get(); boolean changedConfiguration = !settingsDisplayConfiguration.equals(currentDisplayConfiguration); @@ -84,11 +86,11 @@ public class ResizeController implements FxController { private String getMonitorSizes() { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - GraphicsDevice[] gs = ge.getScreenDevices(); + GraphicsDevice[] gs = ge.getScreenDevices(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < gs.length; i++) { DisplayMode dm = gs[i].getDisplayMode(); - if(!sb.isEmpty()) sb.append(" "); + if (!sb.isEmpty()) sb.append(" "); sb.append("displayId: " + i + ", " + dm.getWidth() + "x" + dm.getHeight() + ";"); } return sb.toString(); diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index 705271ec3..108b0962b 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -14,14 +14,14 @@ - - - - - - - - + + + + + + + + From cf17a3f9ca37e5eb55acef706c643689e3c641f2 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Fri, 17 Sep 2021 17:44:26 +0200 Subject: [PATCH 19/22] Saving settings on Drag release --- .../ui/mainwindow/MainWindowTitleController.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index 7a4983159..da3bad214 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -77,9 +77,13 @@ public class MainWindowTitleController implements FxController { window.setX(event.getScreenX() - xOffset); window.setY(event.getScreenY() - yOffset); }); - titleBar.setOnMouseReleased(event -> { + titleBar.setOnDragDetected(mouseDragEvent -> { + titleBar.startFullDrag(); + }); + titleBar.setOnMouseDragReleased(mouseDragEvent -> { saveWindowSettings(); }); + window.setOnCloseRequest(event -> { close(); event.consume(); From 4a13b4145da7e21118895276915d826b879b74fa Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Fri, 17 Sep 2021 17:46:54 +0200 Subject: [PATCH 20/22] Use javaFx-graphics for display information --- .../ui/mainwindow/ResizeController.java | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 9e9377c44..3642cc0b6 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -8,15 +8,13 @@ import org.slf4j.LoggerFactory; import javax.inject.Inject; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; +import javafx.collections.ObservableList; import javafx.fxml.FXML; +import javafx.geometry.Rectangle2D; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Region; +import javafx.stage.Screen; import javafx.stage.Stage; -import java.awt.Dimension; -import java.awt.DisplayMode; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; -import java.awt.Toolkit; @MainWindow public class ResizeController implements FxController { @@ -55,11 +53,11 @@ public class ResizeController implements FxController { settings.displayConfigurationProperty().setValue(getMonitorSizes()); return; } else { - if (checkForChangedDisplayConfiguration()) { + if (didDisplayConfigurationChange()) { //If the position is illegal, then the window appears on the main screen in the middle of the window. - Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); - window.setX((size.getWidth() - window.getMinWidth()) / 2); - window.setY((size.getHeight() - window.getMinHeight()) / 2); + Rectangle2D primaryScreenBounds = Screen.getPrimary().getBounds(); + window.setX((primaryScreenBounds.getWidth() - window.getMinWidth()) / 2); + window.setY((primaryScreenBounds.getHeight() - window.getMinHeight()) / 2); window.setWidth(window.getMinWidth()); window.setHeight(window.getMinHeight()); } else { @@ -76,22 +74,21 @@ public class ResizeController implements FxController { return (settings.windowHeightProperty().get() == 0) && (settings.windowWidthProperty().get() == 0) && (settings.windowXPositionProperty().get() == 0) && (settings.windowYPositionProperty().get() == 0); } - private boolean checkForChangedDisplayConfiguration() { + private boolean didDisplayConfigurationChange() { String currentDisplayConfiguration = getMonitorSizes(); String settingsDisplayConfiguration = settings.displayConfigurationProperty().get(); - boolean changedConfiguration = !settingsDisplayConfiguration.equals(currentDisplayConfiguration); - if (changedConfiguration) settings.displayConfigurationProperty().setValue(currentDisplayConfiguration); - return changedConfiguration; + boolean configurationHasChanged = !settingsDisplayConfiguration.equals(currentDisplayConfiguration); + if (configurationHasChanged) settings.displayConfigurationProperty().setValue(currentDisplayConfiguration); + return configurationHasChanged; } private String getMonitorSizes() { - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - GraphicsDevice[] gs = ge.getScreenDevices(); + ObservableList screens = Screen.getScreens(); StringBuilder sb = new StringBuilder(); - for (int i = 0; i < gs.length; i++) { - DisplayMode dm = gs[i].getDisplayMode(); + for (int i = 0; i < screens.size(); i++) { + Rectangle2D screenBounds = screens.get(i).getBounds(); if (!sb.isEmpty()) sb.append(" "); - sb.append("displayId: " + i + ", " + dm.getWidth() + "x" + dm.getHeight() + ";"); + sb.append("displayId: " + i + ", " + screenBounds.getWidth() + "x" + screenBounds.getHeight() + ";"); } return sb.toString(); } From 21774784a1916110bdf6a28b285acc37cd365e9c Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Fri, 17 Sep 2021 18:51:09 +0200 Subject: [PATCH 21/22] Reduce ResizeRegion to 6px, only save positions at MouseRelease --- .../ui/mainwindow/ResizeController.java | 11 ++++++----- src/main/resources/fxml/main_window_resize.fxml | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java index 3642cc0b6..448d54d91 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java @@ -31,6 +31,10 @@ public class ResizeController implements FxController { public Region rResizer; public Region bResizer; public Region lResizer; + public Region lDefaultRegion; + public Region tDefaultRegion; + public Region rDefaultRegion; + public Region bDefaultRegion; private double origX, origY, origW, origH; @@ -134,7 +138,6 @@ public class ResizeController implements FxController { window.setY(newY); window.setHeight(newH); } - savePositionalSettings(); } @FXML @@ -147,7 +150,6 @@ public class ResizeController implements FxController { window.setX(newX); window.setWidth(newW); } - savePositionalSettings(); } @FXML @@ -156,7 +158,6 @@ public class ResizeController implements FxController { if (newH < window.getMaxHeight() && newH > window.getMinHeight()) { window.setHeight(newH); } - savePositionalSettings(); } @FXML @@ -165,10 +166,10 @@ public class ResizeController implements FxController { if (newW < window.getMaxWidth() && newW > window.getMinWidth()) { window.setWidth(newW); } - savePositionalSettings(); } - private void savePositionalSettings() { + @FXML + public void savePositionalSettings() { settings.windowHeightProperty().setValue(window.getHeight()); settings.windowWidthProperty().setValue(window.getWidth()); settings.windowYPositionProperty().setValue(window.getY()); diff --git a/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml index 108b0962b..7d5fb9437 100644 --- a/src/main/resources/fxml/main_window_resize.fxml +++ b/src/main/resources/fxml/main_window_resize.fxml @@ -14,14 +14,14 @@ - - - - - - - - + + + + + + + + From 09cf76df685ed857e3ec84adedc0e3d56b5139f1 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 22 Sep 2021 11:28:45 +0200 Subject: [PATCH 22/22] minor code cleanup --- .../ui/mainwindow/MainWindowTitleController.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index da3bad214..b33494158 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -62,13 +62,11 @@ public class MainWindowTitleController implements FxController { }); titleBar.setOnMouseClicked(event -> { - if (event.getButton().equals(MouseButton.PRIMARY)) { - if (event.getClickCount() == 2) { - if (window.isFullScreen()) { - window.setFullScreen(false); - } else { - window.setFullScreen(true); - } + if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 2) { + if (window.isFullScreen()) { + window.setFullScreen(false); + } else { + window.setFullScreen(true); } } });