From 3ef26d0b0bfad1847d71a13716f680fbe77afbd3 Mon Sep 17 00:00:00 2001 From: crschnick Date: Thu, 4 Jul 2024 20:11:38 +0000 Subject: [PATCH] Small fixes --- .../xpipe/app/beacon/BeaconRequestHandler.java | 8 +++++++- .../xpipe/app/core/window/ModifiedStage.java | 18 +++++++++++------- .../java/io/xpipe/app/util/PlatformState.java | 3 ++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java b/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java index f06b66c2c..bd9dfffbc 100644 --- a/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java +++ b/app/src/main/java/io/xpipe/app/beacon/BeaconRequestHandler.java @@ -105,7 +105,13 @@ public class BeaconRequestHandler implements HttpHandler { ErrorEvent.fromThrowable(ex).omit().expected().handle(); } else { ErrorEvent.fromThrowable(ex).omit().expected().handle(); - writeError(exchange, new BeaconClientErrorResponse(ex.getMessage()), 400); + // Make deserialization error message more readable + var message = ex.getMessage() + .replace("$RequestBuilder", "") + .replace("Exchange$Request","Request") + .replace("at [Source: UNKNOWN; byte offset: #UNKNOWN]", "") + .trim(); + writeError(exchange, new BeaconClientErrorResponse(message), 400); } return; } catch (Throwable other) { 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 6a539ae1e..960b678a1 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 @@ -19,6 +19,10 @@ import org.apache.commons.lang3.SystemUtils; public class ModifiedStage extends Stage { + public static boolean mergeFrame() { + return SystemUtils.IS_OS_WINDOWS_11; + } + @SneakyThrows @SuppressWarnings("unchecked") public static void init() { @@ -36,7 +40,7 @@ public class ModifiedStage extends Stage { } public static void prepareStage(Stage stage) { - if (SystemUtils.IS_OS_WINDOWS_11) { + if (mergeFrame()) { stage.initStyle(StageStyle.UNIFIED); } } @@ -68,14 +72,14 @@ public class ModifiedStage extends Stage { ctrl.setWindowAttribute( NativeWinWindowControl.DmwaWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE.get(), AppPrefs.get().theme.getValue().isDark()); - boolean backdrop; - if (AppPrefs.get().performanceMode().get()) { - backdrop = false; + boolean seamlessFrame; + if (AppPrefs.get().performanceMode().get() || !mergeFrame()) { + seamlessFrame = false; } else { - backdrop = ctrl.setWindowBackdrop(NativeWinWindowControl.DwmSystemBackDropType.MICA_ALT); + seamlessFrame = ctrl.setWindowBackdrop(NativeWinWindowControl.DwmSystemBackDropType.MICA_ALT); } - stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), backdrop); - stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !backdrop); + stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrame); + stage.getScene().getRoot().pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !seamlessFrame); } private static void updateStage(Stage stage) { diff --git a/app/src/main/java/io/xpipe/app/util/PlatformState.java b/app/src/main/java/io/xpipe/app/util/PlatformState.java index f761febd8..7223122c5 100644 --- a/app/src/main/java/io/xpipe/app/util/PlatformState.java +++ b/app/src/main/java/io/xpipe/app/util/PlatformState.java @@ -1,6 +1,7 @@ package io.xpipe.app.util; import io.xpipe.app.core.check.AppSystemFontCheck; +import io.xpipe.app.core.window.ModifiedStage; import io.xpipe.app.issue.ErrorEvent; import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.prefs.AppPrefs; @@ -113,7 +114,7 @@ public enum PlatformState { } } - if (SystemUtils.IS_OS_WINDOWS_11) { + if (SystemUtils.IS_OS_WINDOWS && ModifiedStage.mergeFrame()) { // This is primarily intended to fix Windows unified stage transparency issues (https://bugs.openjdk.org/browse/JDK-8329382) System.setProperty("prism.forceUploadingPainter", "true"); }