From bf500e46e710b2193f38a7f33d39148073ca7474 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Thu, 25 Mar 2021 16:14:41 +0100 Subject: [PATCH] Window decorations: fixed wrong/missing window icon when application replaces InternalFrame.icon (issue #284) --- flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java | 6 ++++++ .../src/main/java/com/formdev/flatlaf/ui/FlatTitlePane.java | 3 ++- flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt | 1 + flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt | 1 + flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt | 2 ++ .../com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt | 1 + 6 files changed, 13 insertions(+), 1 deletion(-) 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 43038cb1..cf626a79 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -377,6 +377,12 @@ public abstract class FlatLaf initIconColors( defaults, isDark() ); FlatInputMaps.initInputMaps( defaults ); + // copy InternalFrame.icon (the Java cup) to TitlePane.icon + // (using defaults.remove() to avoid that lazy value is resolved and icon loaded here) + Object icon = defaults.remove( "InternalFrame.icon" ); + defaults.put( "InternalFrame.icon", icon ); + defaults.put( "TitlePane.icon", icon ); + // get addons and sort them by priority ServiceLoader addonLoader = ServiceLoader.load( FlatDefaultsAddon.class ); List addons = new ArrayList<>(); 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 fd948684..ddc5bd94 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 @@ -87,6 +87,7 @@ import com.formdev.flatlaf.util.UIScale; * @uiDefault TitlePane.centerTitle boolean * @uiDefault TitlePane.centerTitleIfMenuBarEmbedded boolean * @uiDefault TitlePane.menuBarTitleGap int + * @uiDefault TitlePane.icon Icon * @uiDefault TitlePane.closeIcon Icon * @uiDefault TitlePane.iconifyIcon Icon * @uiDefault TitlePane.maximizeIcon Icon @@ -346,7 +347,7 @@ public class FlatTitlePane iconLabel.setIcon( FlatTitlePaneIcon.create( images, iconSize ) ); else { // no icon set on window --> use default icon - Icon defaultIcon = UIManager.getIcon( "InternalFrame.icon" ); + Icon defaultIcon = UIManager.getIcon( "TitlePane.icon" ); if( defaultIcon != null && (defaultIcon.getIconWidth() == 0 || defaultIcon.getIconHeight() == 0) ) defaultIcon = null; if( defaultIcon != null ) { diff --git a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt index 5c761d8d..317d0fa9 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatDarkLaf_1.8.0_202.txt @@ -1175,6 +1175,7 @@ TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResou TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] TitlePane.embeddedForeground #959595 javax.swing.plaf.ColorUIResource [UI] TitlePane.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI] +TitlePane.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt index d322ebd5..899ee0ae 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatLightLaf_1.8.0_202.txt @@ -1180,6 +1180,7 @@ TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResou TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] TitlePane.embeddedForeground #595959 javax.swing.plaf.ColorUIResource [UI] TitlePane.foreground #000000 javax.swing.plaf.ColorUIResource [UI] +TitlePane.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] diff --git a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt index 1191a7bb..7fa30e96 100644 --- a/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt +++ b/flatlaf-testing/dumps/uidefaults/FlatTestLaf_1.8.0_202.txt @@ -1165,6 +1165,7 @@ TextPaneUI com.formdev.flatlaf.ui.FlatTextPaneUI #---- TitlePane ---- TitlePane.background #00ff00 javax.swing.plaf.ColorUIResource [UI] +TitlePane.borderColor #ff0000 javax.swing.plaf.ColorUIResource [UI] TitlePane.buttonMaximizedHeight 22 TitlePane.buttonSize 44,30 javax.swing.plaf.DimensionUIResource [UI] TitlePane.centerTitle false @@ -1175,6 +1176,7 @@ TitlePane.closeIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWin TitlePane.closePressedBackground #e8112399 60% javax.swing.plaf.ColorUIResource [UI] TitlePane.closePressedForeground #ffffff javax.swing.plaf.ColorUIResource [UI] TitlePane.foreground #0000ff javax.swing.plaf.ColorUIResource [UI] +TitlePane.icon [lazy] 16,16 sun.swing.ImageIconUIResource [UI] (sun.awt.image.ToolkitImage) TitlePane.iconMargins 3,8,3,8 javax.swing.plaf.InsetsUIResource [UI] TitlePane.iconSize 16,16 javax.swing.plaf.DimensionUIResource [UI] TitlePane.iconifyIcon [lazy] 44,30 com.formdev.flatlaf.icons.FlatWindowIconifyIcon [UI] diff --git a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt index 16871bbc..bf51c220 100644 --- a/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt +++ b/flatlaf-theme-editor/src/main/resources/com/formdev/flatlaf/themeeditor/FlatLafUIKeys.txt @@ -873,6 +873,7 @@ TitlePane.closePressedBackground TitlePane.closePressedForeground TitlePane.embeddedForeground TitlePane.foreground +TitlePane.icon TitlePane.iconMargins TitlePane.iconSize TitlePane.iconifyIcon