diff --git a/CHANGELOG.md b/CHANGELOG.md index b372bd24..832c6952 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ FlatLaf Change Log and use them in any component. (PR #388)\ E.g.: `mySlider.putClientProperty( "FlatLaf.styleClass", "myclass" );` - Native window decorations (Windows 10/11 only): + - Unified backgrounds for window title bar is now enabled by default (window + title bar has now same background color as window content). Bottom separator + for menu bars is no longer painted (if unified background is enabled). - Show Windows 11 snap layouts menu when hovering the mouse over the maximize button. (issues #397 and #407) - Option to hide window icon (for single window set client property diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarBorder.java index cc437a8d..2c361941 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarBorder.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuBarBorder.java @@ -53,6 +53,9 @@ public class FlatMenuBarBorder @Override public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) { + if( !showBottomSeparator() ) + return; + float lineHeight = scale( (float) 1 ); FlatUIUtils.paintFilledRectangle( g, borderColor, x, y + height - lineHeight, width, lineHeight ); } @@ -68,4 +71,9 @@ public class FlatMenuBarBorder insets.right = scale( margin.right ); return insets; } + + /** @since 2 */ + protected boolean showBottomSeparator() { + return !UIManager.getBoolean( "TitlePane.unifiedBackground" ); + } } diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index c6d5ecc9..893cdf96 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -709,7 +709,7 @@ TitledBorder.border = 1,1,1,1,$Separator.foreground TitlePane.useWindowDecorations = true TitlePane.menuBarEmbedded = true -TitlePane.unifiedBackground = false +TitlePane.unifiedBackground = true TitlePane.showIcon = true TitlePane.noIconLeftGap = 8 TitlePane.iconSize = 16,16 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 f622b28e..479540f7 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 @@ -718,13 +718,11 @@ class DemoFrame //---- windowDecorationsCheckBoxMenuItem ---- windowDecorationsCheckBoxMenuItem.setText("Window decorations"); - windowDecorationsCheckBoxMenuItem.setSelected(true); windowDecorationsCheckBoxMenuItem.addActionListener(e -> windowDecorationsChanged()); optionsMenu.add(windowDecorationsCheckBoxMenuItem); //---- menuBarEmbeddedCheckBoxMenuItem ---- menuBarEmbeddedCheckBoxMenuItem.setText("Embedded menu bar"); - menuBarEmbeddedCheckBoxMenuItem.setSelected(true); menuBarEmbeddedCheckBoxMenuItem.addActionListener(e -> menuBarEmbeddedChanged()); optionsMenu.add(menuBarEmbeddedCheckBoxMenuItem); @@ -876,6 +874,10 @@ class DemoFrame pasteMenuItem.addActionListener( new DefaultEditorKit.PasteAction() ); if( FlatLaf.supportsNativeWindowDecorations() ) { + windowDecorationsCheckBoxMenuItem.setSelected( FlatLaf.isUseNativeWindowDecorations() ); + menuBarEmbeddedCheckBoxMenuItem.setSelected( UIManager.getBoolean( "TitlePane.menuBarEmbedded" ) ); + unifiedTitleBarMenuItem.setSelected( UIManager.getBoolean( "TitlePane.unifiedBackground" ) ); + if( JBRCustomDecorations.isSupported() ) { // If the JetBrains Runtime is used, it forces the use of it's own custom // window decoration, which can not disabled. diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd index 326c9828..ce6c37fe 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DemoFrame.jfd @@ -354,7 +354,6 @@ new FormModel { add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { name: "windowDecorationsCheckBoxMenuItem" "text": "Window decorations" - "selected": true auxiliary() { "JavaCodeGenerator.variableLocal": false } @@ -363,7 +362,6 @@ new FormModel { add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) { name: "menuBarEmbeddedCheckBoxMenuItem" "text": "Embedded menu bar" - "selected": true auxiliary() { "JavaCodeGenerator.variableLocal": false } diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt index 006d39ea..bbb09e93 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0.txt @@ -1217,7 +1217,7 @@ TitlePane.noIconLeftGap 8 TitlePane.restoreIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] TitlePane.showIcon true TitlePane.titleMargins 3,0,3,0 javax.swing.plaf.InsetsUIResource [UI] -TitlePane.unifiedBackground false +TitlePane.unifiedBackground true TitlePane.useWindowDecorations true diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt index 1f122661..36956763 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0.txt @@ -1222,7 +1222,7 @@ TitlePane.noIconLeftGap 8 TitlePane.restoreIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] TitlePane.showIcon true TitlePane.titleMargins 3,0,3,0 javax.swing.plaf.InsetsUIResource [UI] -TitlePane.unifiedBackground false +TitlePane.unifiedBackground true TitlePane.useWindowDecorations true diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt index df797d15..f40c58d4 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0.txt @@ -1237,7 +1237,7 @@ TitlePane.noIconLeftGap 8 TitlePane.restoreIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowRestoreIcon [UI] TitlePane.showIcon true TitlePane.titleMargins 3,0,3,0 javax.swing.plaf.InsetsUIResource [UI] -TitlePane.unifiedBackground false +TitlePane.unifiedBackground true TitlePane.useWindowDecorations true