diff --git a/CHANGELOG.md b/CHANGELOG.md index 199cfbcb..44de89bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ FlatLaf Change Log ## Unreleased - ComboBox: Use small border if used as table editor. +- ToolBar: Disable focusability of buttons in toolbar. ## 0.13 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarUI.java index 25d24a08..17f2cd1b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarUI.java @@ -19,6 +19,8 @@ package com.formdev.flatlaf.ui; import static com.formdev.flatlaf.util.UIScale.scale; import java.awt.Component; import java.awt.Insets; +import java.awt.event.ContainerEvent; +import java.awt.event.ContainerListener; import javax.swing.AbstractButton; import javax.swing.JComponent; import javax.swing.UIManager; @@ -53,6 +55,29 @@ public class FlatToolBarUI rolloverBorder = null; } + @Override + protected ContainerListener createToolBarContListener() { + return new ToolBarContListener() { + @Override + public void componentAdded( ContainerEvent e ) { + super.componentAdded( e ); + + Component c = e.getChild(); + if( c instanceof AbstractButton ) + c.setFocusable( false ); + } + + @Override + public void componentRemoved( ContainerEvent e ) { + super.componentRemoved( e ); + + Component c = e.getChild(); + if( c instanceof AbstractButton ) + c.setFocusable( true ); + } + }; + } + @Override protected Border createRolloverBorder() { return getRolloverBorder(); diff --git a/flatlaf-core/src/test/java/com/formdev/flatlaf/FlatInspector.java b/flatlaf-core/src/test/java/com/formdev/flatlaf/FlatInspector.java index 2b3cb3c1..fc6861b2 100644 --- a/flatlaf-core/src/test/java/com/formdev/flatlaf/FlatInspector.java +++ b/flatlaf-core/src/test/java/com/formdev/flatlaf/FlatInspector.java @@ -236,6 +236,7 @@ public class FlatInspector } } + text += "Focusable: " + c.isFocusable() + '\n'; text += "Parent: " + c.getParent().getClass().getName(); return text;