diff --git a/CHANGELOG.md b/CHANGELOG.md index eb3d1d07..a87e703f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ FlatLaf Change Log bounds. (issue #477) - Repaint component when setting client property `JComponent.outline` (issue #480). +- macOS: Fixed NPE when using some icons in main menu items. (issue #483) ## 2.0.1 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java index 9f1c3280..1f970a7c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java @@ -573,7 +573,10 @@ public class FlatButtonUI public static Color buttonStateColor( Component c, Color enabledColor, Color disabledColor, Color focusedColor, Color hoverColor, Color pressedColor ) { - if(c != null && !c.isEnabled() ) + if( c == null ) + return enabledColor; + + if( !c.isEnabled() ) return disabledColor; if( c instanceof AbstractButton ) { @@ -586,7 +589,7 @@ public class FlatButtonUI return hoverColor; } - if( c != null && focusedColor != null && isFocusPainted( c ) && FlatUIUtils.isPermanentFocusOwner( c ) ) + if( focusedColor != null && isFocusPainted( c ) && FlatUIUtils.isPermanentFocusOwner( c ) ) return focusedColor; return enabledColor; diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatIconNullComponent.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/icons/TestFlatIconPaintingNullComponent.java similarity index 74% rename from flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatIconNullComponent.java rename to flatlaf-core/src/test/java/com/formdev/flatlaf/icons/TestFlatIconPaintingNullComponent.java index ddf391d1..a5c1ea6f 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/ui/TestFlatIconNullComponent.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/icons/TestFlatIconPaintingNullComponent.java @@ -1,5 +1,5 @@ /* - * Copyright 2021 FormDev Software GmbH + * Copyright 2022 FormDev Software GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,15 +14,13 @@ * limitations under the License. */ -package com.formdev.flatlaf.ui; +package com.formdev.flatlaf.icons; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.Icon; -import com.formdev.flatlaf.icons.FlatHelpButtonIcon; -import com.formdev.flatlaf.icons.FlatMenuArrowIcon; -import com.formdev.flatlaf.icons.FlatSearchIcon; +import com.formdev.flatlaf.ui.TestUtils; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -52,16 +50,16 @@ class TestFlatIconPaintingNullComponent @Test void flatMenuArrowIcon() { - paintWithoutException(new FlatMenuArrowIcon()); + paintWithoutException( new FlatMenuArrowIcon() ); } @Test void flatSearchIcon() { - paintWithoutException(new FlatSearchIcon()); + paintWithoutException( new FlatSearchIcon() ); } - private void paintWithoutException(Icon icon) { - graphics.clearRect( 0, 0, 32,32 ); - assertDoesNotThrow(() -> icon.paintIcon( null, graphics, 0, 0 )); + private void paintWithoutException( Icon icon ) { + graphics.clearRect( 0, 0, 32, 32 ); + assertDoesNotThrow( () -> icon.paintIcon( null, graphics, 0, 0 ) ); } }