From 0620fe1d2ae6a0bc9f0243468e6429e4f62d607b Mon Sep 17 00:00:00 2001 From: crschnick Date: Mon, 1 Jul 2024 15:07:33 +0000 Subject: [PATCH] Fix stage style blank screen issue --- .../main/java/io/xpipe/app/core/window/AppMainWindow.java | 7 ++----- .../java/io/xpipe/app/core/window/AppWindowHelper.java | 4 ++-- .../main/java/io/xpipe/app/core/window/ModifiedStage.java | 8 ++++++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java index b7eab1b76..72f2147a4 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppMainWindow.java @@ -11,7 +11,6 @@ import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.prefs.CloseBehaviourAlert; import io.xpipe.app.util.ThreadHelper; import io.xpipe.core.process.OsType; - import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.geometry.Rectangle2D; @@ -22,19 +21,17 @@ import javafx.scene.layout.Region; import javafx.scene.paint.Color; import javafx.stage.Screen; import javafx.stage.Stage; -import javafx.stage.StageStyle; - import lombok.Builder; import lombok.Getter; import lombok.Value; import lombok.extern.jackson.Jacksonized; +import javax.imageio.ImageIO; import java.io.IOException; import java.nio.file.Path; import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; -import javax.imageio.ImageIO; public class AppMainWindow { @@ -55,7 +52,7 @@ public class AppMainWindow { INSTANCE = new AppMainWindow(stage); var scene = new Scene(new Region(), -1, -1, false); scene.setFill(Color.TRANSPARENT); - stage.initStyle(StageStyle.UNIFIED); + ModifiedStage.prepareStage(stage); stage.setScene(scene); AppWindowHelper.setupStylesheets(stage.getScene()); return INSTANCE; diff --git a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java index 62e0af590..795cd6075 100644 --- a/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java +++ b/app/src/main/java/io/xpipe/app/core/window/AppWindowHelper.java @@ -64,7 +64,7 @@ public class AppWindowHelper { public static Stage sideWindow( String title, Function> contentFunc, boolean bindSize, ObservableValue loading) { var stage = AppWindowBounds.centerStage(); - stage.initStyle(StageStyle.UNIFIED); + ModifiedStage.prepareStage(stage); if (AppMainWindow.getInstance() != null) { stage.initOwner(AppMainWindow.getInstance().getStage()); } @@ -190,7 +190,7 @@ public class AppWindowHelper { } alert.getDialogPane().getScene().setFill(Color.TRANSPARENT); var stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.initStyle(StageStyle.UNIFIED); + ModifiedStage.prepareStage(stage); addIcons(stage); setupStylesheets(alert.getDialogPane().getScene()); return alert; diff --git a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java b/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java index f017652ff..6a539ae1e 100644 --- a/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java +++ b/app/src/main/java/io/xpipe/app/core/window/ModifiedStage.java @@ -10,10 +10,12 @@ import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.css.PseudoClass; import javafx.stage.Stage; +import javafx.stage.StageStyle; import javafx.stage.Window; import javafx.util.Duration; import lombok.SneakyThrows; +import org.apache.commons.lang3.SystemUtils; public class ModifiedStage extends Stage { @@ -33,6 +35,12 @@ public class ModifiedStage extends Stage { }); } + public static void prepareStage(Stage stage) { + if (SystemUtils.IS_OS_WINDOWS_11) { + stage.initStyle(StageStyle.UNIFIED); + } + } + private static void hookUpStage(Stage stage) { applyModes(stage); if (AppPrefs.get() != null) {