From 73c37b2018197185d54a4ea722c77e569b6a70a0 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Mon, 13 Dec 2021 00:47:23 +0100 Subject: [PATCH] Search/clear icons: option to ignore button state (hover/pressed) for usage where button background changes color on hover/pressed --- .../com/formdev/flatlaf/icons/FlatClearIcon.java | 10 +++++++++- .../com/formdev/flatlaf/icons/FlatSearchIcon.java | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java index edce46f9..30f691c4 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatClearIcon.java @@ -47,8 +47,16 @@ public class FlatClearIcon @Styleable protected Color clearIconHoverColor = UIManager.getColor( "SearchField.clearIconHoverColor" ); @Styleable protected Color clearIconPressedColor = UIManager.getColor( "SearchField.clearIconPressedColor" ); + private final boolean ignoreButtonState; + public FlatClearIcon() { + this( false ); + } + + /** @since 2 */ + public FlatClearIcon( boolean ignoreButtonState ) { super( 16, 16, null ); + this.ignoreButtonState = ignoreButtonState; } /** @since 2 */ @@ -63,7 +71,7 @@ public class FlatClearIcon @Override protected void paintIcon( Component c, Graphics2D g ) { - if( c instanceof AbstractButton ) { + if( !ignoreButtonState && c instanceof AbstractButton ) { ButtonModel model = ((AbstractButton)c).getModel(); if( model.isPressed() || model.isRollover() ) { /* diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java index 89fd7af0..e9f72ffa 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatSearchIcon.java @@ -45,8 +45,16 @@ public class FlatSearchIcon @Styleable protected Color searchIconHoverColor = UIManager.getColor( "SearchField.searchIconHoverColor" ); @Styleable protected Color searchIconPressedColor = UIManager.getColor( "SearchField.searchIconPressedColor" ); + private final boolean ignoreButtonState; + public FlatSearchIcon() { + this( false ); + } + + /** @since 2 */ + public FlatSearchIcon( boolean ignoreButtonState ) { super( 16, 16, null ); + this.ignoreButtonState = ignoreButtonState; } /** @since 2 */ @@ -70,8 +78,10 @@ public class FlatSearchIcon */ - g.setColor( FlatButtonUI.buttonStateColor( c, searchIconColor, searchIconColor, - null, searchIconHoverColor, searchIconPressedColor ) ); + g.setColor( ignoreButtonState + ? searchIconColor + : FlatButtonUI.buttonStateColor( c, searchIconColor, searchIconColor, + null, searchIconHoverColor, searchIconPressedColor ) ); // paint magnifier Area area = new Area( new Ellipse2D.Float( 2, 2, 10, 10 ) );