From 69ac683c8c0444fc6eec8a2b1405e90a5c51337c Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 17 Mar 2021 00:43:08 +0100 Subject: [PATCH] Support running in JetBrains Projector (https://jetbrains.com/projector/) --- CHANGELOG.md | 1 + flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java | 3 +++ .../java/com/formdev/flatlaf/ui/FlatNativeWindowBorder.java | 4 ++++ .../main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java | 2 +- .../src/main/java/com/formdev/flatlaf/util/SystemInfo.java | 6 ++++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce29d230..92ee3606 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ FlatLaf Change Log "TitlePane.unifiedBackground", true );` then window title bar and menu bar use same background color as main content. (PR #268; issue #254) - JIDE Common Layer: Support `JideButton`, `JideLabel` and `JideToggleButton`. +- Support running in [JetBrains Projector](https://jetbrains.com/projector/). #### Fixed bugs diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index 8599363c..685f24c2 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -157,6 +157,9 @@ public abstract class FlatLaf */ @Override public boolean getSupportsWindowDecorations() { + if( SystemInfo.isProjector ) + return false; + if( SystemInfo.isWindows_10_orLater && FlatNativeWindowBorder.isSupported() ) return false; diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeWindowBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeWindowBorder.java index 5c04f771..572a7f6b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeWindowBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatNativeWindowBorder.java @@ -225,6 +225,10 @@ public class FlatNativeWindowBorder if( !SystemInfo.isWindows_10_orLater ) return; + // do not use when running in JetBrains Projector + if( SystemInfo.isProjector ) + return; + // check whether disabled via system property if( !FlatSystemProperties.getBoolean( FlatSystemProperties.USE_WINDOW_DECORATIONS, true ) ) return; diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java index 6ee90e3c..d26f9877 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java @@ -70,7 +70,7 @@ public class FlatPopupFactory boolean forceHeavyWeight = isOptionEnabled( owner, contents, FlatClientProperties.POPUP_FORCE_HEAVY_WEIGHT, "Popup.forceHeavyWeight" ); - if( !isOptionEnabled( owner, contents, FlatClientProperties.POPUP_DROP_SHADOW_PAINTED, "Popup.dropShadowPainted" ) ) + if( !isOptionEnabled( owner, contents, FlatClientProperties.POPUP_DROP_SHADOW_PAINTED, "Popup.dropShadowPainted" ) || SystemInfo.isProjector ) return new NonFlashingPopup( getPopupForScreenOfOwner( owner, contents, x, y, forceHeavyWeight ), contents ); // macOS and Linux adds drop shadow to heavy weight popups diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java index d4e2397d..63cdda60 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java @@ -54,6 +54,9 @@ public class SystemInfo // UI toolkits public static final boolean isKDE; + // other + public static final boolean isProjector; + static { // platforms String osName = System.getProperty( "os.name" ).toLowerCase( Locale.ENGLISH ); @@ -85,6 +88,9 @@ public class SystemInfo // UI toolkits isKDE = (isLinux && System.getenv( "KDE_FULL_SESSION" ) != null); + + // other + isProjector = Boolean.getBoolean( "org.jetbrains.projector.server.enable" ); } public static long scanVersion( String version ) {