diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b863508..f16dfde0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ FlatLaf Change Log ## 3.7-SNAPSHOT - Extras: Support JSVG 2.0.0. Minimum JSVG version is now 1.6.0. (issue #997) +- JideSplitButton: Fixed updating popup when switching theme. (issue #1000) ## 3.6 diff --git a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideSplitButtonUI.java b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideSplitButtonUI.java index 080cf1fb..25ca30f4 100644 --- a/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideSplitButtonUI.java +++ b/flatlaf-jide-oss/src/main/java/com/formdev/flatlaf/jideoss/ui/FlatJideSplitButtonUI.java @@ -25,9 +25,11 @@ import java.awt.geom.Rectangle2D; import javax.swing.ButtonModel; import javax.swing.JComponent; import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; +import javax.swing.plaf.PopupMenuUI; import com.formdev.flatlaf.ui.FlatUIUtils; import com.formdev.flatlaf.util.UIScale; import com.jidesoft.plaf.LookAndFeelFactory; @@ -54,6 +56,14 @@ public class FlatJideSplitButtonUI // but it does not because FlatLaf already has added the UI class to the UI defaults LookAndFeelFactory.installJideExtension(); + // workaround for bug in JideSplitButton, which overrides JMenu.updateUI(), + // but does not invoke super.updateUI() to update UI of JMenu.popupMenu field + if( c instanceof JideSplitButton ) { + JPopupMenu popupMenu = ((JideSplitButton)c).getPopupMenu(); + if( popupMenu != null ) + popupMenu.setUI( (PopupMenuUI) UIManager.getUI( popupMenu ) ); + } + return new FlatJideSplitButtonUI(); }