From 1b5da0e1d1ebdcd5e43aa379517f1964b3ee14a8 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Tue, 30 Mar 2021 01:34:34 +0200 Subject: [PATCH] Window decorations: support enabling/disabling unified title bar backgrounds at runtime without `FlatLaf.updateUI()` --- .../main/java/com/formdev/flatlaf/ui/FlatMenuBarUI.java | 7 ++----- .../main/java/com/formdev/flatlaf/ui/FlatTitlePane.java | 4 ++-- .../src/main/java/com/formdev/flatlaf/demo/DemoFrame.java | 2 +- .../formdev/flatlaf/testing/FlatWindowDecorationsTest.java | 5 +++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarUI.java index f40020cc..f17053e7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarUI.java @@ -53,8 +53,6 @@ import com.formdev.flatlaf.util.SystemInfo; public class FlatMenuBarUI extends BasicMenuBarUI { - protected boolean unifiedBackground; - public static ComponentUI createUI( JComponent c ) { return new FlatMenuBarUI(); } @@ -69,8 +67,6 @@ public class FlatMenuBarUI super.installDefaults(); LookAndFeel.installProperty( menuBar, "opaque", false ); - - unifiedBackground = UIManager.getBoolean( "TitlePane.unifiedBackground" ); } @Override @@ -107,7 +103,8 @@ public class FlatMenuBarUI return true; // do not paint background for unified title pane - if( unifiedBackground ) + // (not storing value of "TitlePane.unifiedBackground" in class to allow changing at runtime) + if( UIManager.getBoolean( "TitlePane.unifiedBackground" ) ) return false; // paint background in full screen mode diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java index ddc5bd94..845c1aa0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java @@ -105,7 +105,6 @@ public class FlatTitlePane protected final Color embeddedForeground = UIManager.getColor( "TitlePane.embeddedForeground" ); protected final Color borderColor = UIManager.getColor( "TitlePane.borderColor" ); - protected final boolean unifiedBackground = UIManager.getBoolean( "TitlePane.unifiedBackground" ); protected final Dimension iconSize = UIManager.getDimension( "TitlePane.iconSize" ); protected final int buttonMaximizedHeight = UIManager.getInt( "TitlePane.buttonMaximizedHeight" ); protected final boolean centerTitle = UIManager.getBoolean( "TitlePane.centerTitle" ); @@ -523,7 +522,8 @@ debug*/ @Override protected void paintComponent( Graphics g ) { - if( !unifiedBackground ) { + // not storing value of "TitlePane.unifiedBackground" in class to allow changing at runtime + if( !UIManager.getBoolean( "TitlePane.unifiedBackground" ) ) { g.setColor( getBackground() ); g.fillRect( 0, 0, getWidth(), getHeight() ); } diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java index 3d61f6a7..ff3fac17 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.java @@ -172,7 +172,7 @@ class DemoFrame private void unifiedTitleBar() { UIManager.put( "TitlePane.unifiedBackground", unifiedTitleBarMenuItem.isSelected() ); - FlatLaf.updateUI(); + repaint(); } private void underlineMenuSelection() { diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java index 2e878c0a..7df63667 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatWindowDecorationsTest.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.Random; import javax.swing.*; import com.formdev.flatlaf.FlatClientProperties; -import com.formdev.flatlaf.FlatLaf; import net.miginfocom.swing.*; /** @@ -112,7 +111,9 @@ public class FlatWindowDecorationsTest private void unifiedBackgroundChanged() { UIManager.put( "TitlePane.unifiedBackground", unifiedBackgroundCheckBox.isSelected() ); - FlatLaf.updateUI(); + Window window = SwingUtilities.windowForComponent( this ); + if( window != null ) + window.repaint(); } private void menuBarChanged() {