diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eb363e6..ed5ca55a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ FlatLaf Change Log and right margins. (issue #54) - Hide mnemonics if window is deactivated (e.g. Alt+Tab to another window). (issue #43) +- macOS: Enabled drop shadows for popup menus and combobox popups. (issue #94) - macOS: Fixed NPE if using `JMenuBar` in `JInternalFrame` and macOS screen menu bar is enabled (with `-Dapple.laf.useScreenMenuBar=true`). (issue #90) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupMenuUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupMenuUI.java index 480b0222..1fae8212 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupMenuUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupMenuUI.java @@ -19,6 +19,7 @@ package com.formdev.flatlaf.ui; import javax.swing.JComponent; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicPopupMenuUI; +import com.formdev.flatlaf.util.SystemInfo; /** * Provides the Flat LaF UI delegate for {@link javax.swing.JPopupMenu}. @@ -35,7 +36,28 @@ import javax.swing.plaf.basic.BasicPopupMenuUI; public class FlatPopupMenuUI extends BasicPopupMenuUI { + private boolean oldLightWeightPopupEnabled; + public static ComponentUI createUI( JComponent c ) { return new FlatPopupMenuUI(); } + + @Override + public void installDefaults() { + super.installDefaults(); + + // use heavy-weight popups on macOS to get nice drop shadow from OS + if( SystemInfo.IS_MAC ) { + oldLightWeightPopupEnabled = popupMenu.isLightWeightPopupEnabled(); + popupMenu.setLightWeightPopupEnabled( false ); + } + } + + @Override + protected void uninstallDefaults() { + super.uninstallDefaults(); + + if( SystemInfo.IS_MAC ) + popupMenu.setLightWeightPopupEnabled( oldLightWeightPopupEnabled ); + } }