From 43429ddc39c25a7bbf3413359a11d9e9d22446f8 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 4 Oct 2019 19:26:09 +0200 Subject: [PATCH] hide label and button mnemonics on Mac (#4) --- CHANGELOG.md | 1 + .../src/main/java/com/formdev/flatlaf/FlatLaf.java | 4 ++++ .../main/java/com/formdev/flatlaf/ui/FlatButtonUI.java | 3 ++- .../main/java/com/formdev/flatlaf/ui/FlatLabelUI.java | 10 +++++++++- .../java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java | 3 ++- 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43bc8a18..f5c5bc7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ FlatLaf Change Log - Use new chevron arrows in "Flat Light" and "Flat Dark" themes, but keep triangle arrows in "Flat IntelliJ" and "Flat Darcula" themes. (issue #7) +- Hide label and button mnemonics on Mac. (issue #4) - If a JButton has an icon and no text, then it does not get a minimum width (usually 72 pixel) and the left and right insets are same as top/bottom insets so that it becomes square (if the icon is square). 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 d52bda5d..1040e40c 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -429,4 +429,8 @@ public abstract class FlatLaf return strs; } + + public static boolean isShowMnemonics() { + return !SystemInfo.IS_MAC; + } } 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 44e496b3..e86241c9 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 @@ -36,6 +36,7 @@ import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicButtonUI; +import com.formdev.flatlaf.FlatLaf; /** * Provides the Flat LaF UI delegate for {@link javax.swing.JButton}. @@ -203,7 +204,7 @@ public class FlatButtonUI static void paintText( Graphics g, AbstractButton b, Rectangle textRect, String text, Color foreground ) { FontMetrics fm = b.getFontMetrics( b.getFont() ); - int mnemonicIndex = b.getDisplayedMnemonicIndex(); + int mnemonicIndex = FlatLaf.isShowMnemonics() ? b.getDisplayedMnemonicIndex() : -1; g.setColor( foreground ); FlatUIUtils.drawStringUnderlineCharAt( b, g, text, mnemonicIndex, diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java index 05c38c58..c63cbf28 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java @@ -27,6 +27,7 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicLabelUI; +import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.util.UIScale; /** @@ -71,9 +72,16 @@ public class FlatLabelUI defaults_initialized = false; } + @Override + protected void paintEnabledText( JLabel l, Graphics g, String s, int textX, int textY ) { + int mnemIndex = FlatLaf.isShowMnemonics() ? l.getDisplayedMnemonicIndex() : -1; + g.setColor( l.getForeground() ); + FlatUIUtils.drawStringUnderlineCharAt( l, g, s, mnemIndex, textX, textY ); + } + @Override protected void paintDisabledText( JLabel l, Graphics g, String s, int textX, int textY ) { - int mnemIndex = l.getDisplayedMnemonicIndex(); + int mnemIndex = FlatLaf.isShowMnemonics() ? l.getDisplayedMnemonicIndex() : -1; g.setColor( disabledForeground ); FlatUIUtils.drawStringUnderlineCharAt( l, g, s, mnemIndex, textX, textY ); } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java index 5da172e7..2b108b28 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java @@ -33,6 +33,7 @@ import javax.swing.plaf.ComponentUI; import javax.swing.plaf.UIResource; import javax.swing.plaf.basic.BasicTabbedPaneUI; import javax.swing.text.View; +import com.formdev.flatlaf.FlatLaf; /** * Provides the Flat LaF UI delegate for {@link javax.swing.JTabbedPane}. @@ -263,7 +264,7 @@ public class FlatTabbedPaneUI } else color = disabledForeground; - int mnemIndex = tabPane.getDisplayedMnemonicIndexAt( tabIndex ); + int mnemIndex = FlatLaf.isShowMnemonics() ? tabPane.getDisplayedMnemonicIndexAt( tabIndex ) : -1; g.setColor( color ); FlatUIUtils.drawStringUnderlineCharAt( tabPane, g, title, mnemIndex,