From 829b64cd3dc40dd2984570d1b5dbb2926e1170ef Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Mon, 19 Feb 2024 08:55:16 +0100 Subject: [PATCH] dialog centers on main app screen if mainWindow is hidden --- .../org/cryptomator/ui/unlock/UnlockWorkflow.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java b/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java index 78166a939..4215af2bc 100644 --- a/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java +++ b/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java @@ -20,9 +20,10 @@ import javax.inject.Inject; import javafx.application.Platform; import javafx.beans.property.ObjectProperty; import javafx.concurrent.Task; +import javafx.geometry.Rectangle2D; import javafx.scene.Scene; +import javafx.stage.Screen; import javafx.stage.Stage; -import javafx.stage.Window; import java.io.IOException; /** @@ -112,8 +113,16 @@ public class UnlockWorkflow extends Task { case ASK -> Platform.runLater(() -> { window.setScene(successScene.get()); window.show(); - window.setX(mainWindow.getX() + (mainWindow.getWidth() - window.getWidth()) / 2); - window.setY(mainWindow.getY() + (mainWindow.getHeight() - window.getHeight()) / 2); + double x = mainWindow.getX() + (mainWindow.getWidth() - window.getWidth()) / 2; + double y = mainWindow.getY() + (mainWindow.getHeight() - window.getHeight()) / 2; + if(!mainWindow.isShowing()) { + Screen screen = Screen.getScreensForRectangle(mainWindow.getX(), mainWindow.getY(), mainWindow.getWidth(), mainWindow.getHeight()).get(0); + Rectangle2D bounds = screen.getVisualBounds(); + x = bounds.getMinX() + (bounds.getWidth() - window.getWidth()) / 2; + y = bounds.getMinY() + (bounds.getHeight() - window.getHeight()) / 2; + } + window.setX(x); + window.setY(y); }); case REVEAL -> { Platform.runLater(window::close);