From 63a579cf05fb3bfa305594ea0dab19fd19a28cff Mon Sep 17 00:00:00 2001 From: crschnick Date: Tue, 16 Jul 2024 09:09:48 +0000 Subject: [PATCH] Fixes --- .../main/java/io/xpipe/app/core/AppTheme.java | 1 + .../io/xpipe/app/core/window/ModifiedStage.java | 2 +- .../core/window/NativeMacOsWindowControl.java | 2 +- .../io/xpipe/app/resources/style/style.css | 2 +- .../main/java/io/xpipe/core/process/OsType.java | 17 +++++++++++++++++ 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/core/AppTheme.java b/app/src/main/java/io/xpipe/app/core/AppTheme.java index 017c4cf75..e82f56c89 100644 --- a/app/src/main/java/io/xpipe/app/core/AppTheme.java +++ b/app/src/main/java/io/xpipe/app/core/AppTheme.java @@ -43,6 +43,7 @@ public class AppTheme { public static void initThemeHandlers(Stage stage) { Runnable r = () -> { + stage.getScene().getRoot().getStyleClass().add(OsType.getLocal().getId()); if (AppPrefs.get() == null) { var def = Theme.getDefaultLightTheme(); stage.getScene().getRoot().getStyleClass().add(def.getCssId()); 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 ca3efcdd4..4352ab6c6 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 @@ -66,8 +66,8 @@ public class ModifiedStage extends Stage { } case OsType.MacOs macOs -> { var ctrl = new NativeMacOsWindowControl(stage); - ctrl.setWindowDarkMode(AppPrefs.get().theme.getValue().isDark()); var seamlessFrame = !AppPrefs.get().performanceMode().get() && mergeFrame(); + ctrl.setAppearance(seamlessFrame, AppPrefs.get().theme.getValue().isDark()); stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrame); stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !seamlessFrame); } diff --git a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java index 589e3ef45..fccaca849 100644 --- a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java +++ b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java @@ -28,7 +28,7 @@ public class NativeMacOsWindowControl { this.nsWindow = (long) nativeHandle; } - public void setWindowDarkMode(boolean darkMode) { + public void setAppearance(boolean seamlessFrame, boolean darkMode) { if (!ModuleHelper.isImage()) { return; } diff --git a/app/src/main/resources/io/xpipe/app/resources/style/style.css b/app/src/main/resources/io/xpipe/app/resources/style/style.css index 2c4ddece8..813105d3a 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/style.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/style.css @@ -9,7 +9,7 @@ -fx-background-color: transparent; } -.root:seamless-frame { +.root.macos:seamless-frame { -fx-padding: 0 0 27 0; } diff --git a/core/src/main/java/io/xpipe/core/process/OsType.java b/core/src/main/java/io/xpipe/core/process/OsType.java index 9882e409e..f977700b7 100644 --- a/core/src/main/java/io/xpipe/core/process/OsType.java +++ b/core/src/main/java/io/xpipe/core/process/OsType.java @@ -46,6 +46,8 @@ public interface OsType { sealed interface Local extends OsType permits OsType.Windows, OsType.Linux, OsType.MacOs { + String getId(); + default Any toAny() { return (Any) this; } @@ -131,6 +133,11 @@ public interface OsType { return "Windows"; } } + + @Override + public String getId() { + return "windows"; + } } class Unix implements OsType { @@ -197,6 +204,11 @@ public interface OsType { final class Linux extends Unix implements OsType, Local, Any { + @Override + public String getId() { + return "linux"; + } + @Override public String determineOperatingSystemName(ShellControl pc) throws Exception { try (CommandControl c = pc.command("lsb_release -a").start()) { @@ -223,6 +235,11 @@ public interface OsType { final class MacOs implements OsType, Local, Any { + @Override + public String getId() { + return "macos"; + } + @Override public String makeFileSystemCompatible(String name) { // Technically the backslash is supported, but it causes all kinds of troubles, so we also exclude it