diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ab6d61..9fc0b5da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ FlatLaf Change Log ================== +## 0.44-SNAPSHOT + +#### Fixed bugs + +- Custom window decorations: Not visible menu bar is now ignored in layout. + + ## 0.43 #### New features and improvements diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java index 49b687f9..d29406ef 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRootPaneUI.java @@ -252,8 +252,9 @@ public class FlatRootPaneUI int width = Math.max( titlePaneSize.width, contentSize.width ); int height = titlePaneSize.height + contentSize.height; if( titlePane == null || !titlePane.isMenuBarEmbedded() ) { - Dimension menuBarSize = (rootPane.getJMenuBar() != null) - ? getSizeFunc.apply( rootPane.getJMenuBar() ) + JMenuBar menuBar = rootPane.getJMenuBar(); + Dimension menuBarSize = (menuBar != null && menuBar.isVisible()) + ? getSizeFunc.apply( menuBar ) : new Dimension(); width = Math.max( width, menuBarSize.width ); @@ -290,7 +291,7 @@ public class FlatRootPaneUI } JMenuBar menuBar = rootPane.getJMenuBar(); - if( menuBar != null ) { + if( menuBar != null && menuBar.isVisible() ) { if( titlePane != null && titlePane.isMenuBarEmbedded() ) { titlePane.validate(); menuBar.setBounds( titlePane.getMenuBarBounds() ); 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 9e2e26b8..49026992 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 @@ -157,7 +157,7 @@ public class FlatTitlePane @Override public Dimension getPreferredSize() { JMenuBar menuBar = rootPane.getJMenuBar(); - return (menuBar != null && isMenuBarEmbedded()) + return (menuBar != null && menuBar.isVisible() && isMenuBarEmbedded()) ? FlatUIUtils.addInsets( menuBar.getPreferredSize(), UIScale.scale( menuBarMargins ) ) : new Dimension(); } @@ -238,7 +238,7 @@ public class FlatTitlePane } protected void activeChanged( boolean active ) { - boolean hasEmbeddedMenuBar = rootPane.getJMenuBar() != null && isMenuBarEmbedded(); + boolean hasEmbeddedMenuBar = rootPane.getJMenuBar() != null && rootPane.getJMenuBar().isVisible() && isMenuBarEmbedded(); Color background = FlatUIUtils.nonUIResource( active ? activeBackground : inactiveBackground ); Color foreground = FlatUIUtils.nonUIResource( active ? activeForeground : inactiveForeground ); Color titleForeground = (hasEmbeddedMenuBar && active) ? FlatUIUtils.nonUIResource( embeddedForeground ) : foreground; @@ -688,7 +688,7 @@ debug*/ protected Border getMenuBarBorder() { JMenuBar menuBar = rootPane.getJMenuBar(); - return (menuBar != null && isMenuBarEmbedded()) ? menuBar.getBorder() : null; + return (menuBar != null && menuBar.isVisible() && isMenuBarEmbedded()) ? menuBar.getBorder() : null; } }