From 2136d9f13d12f480338ba6e74fa49ab13ce03159 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 15 May 2020 14:06:33 +0200 Subject: [PATCH] PasswordField: do not apply minimum width if `columns` property > 0 --- CHANGELOG.md | 2 ++ .../com/formdev/flatlaf/ui/FlatPasswordFieldUI.java | 12 ++---------- .../java/com/formdev/flatlaf/ui/FlatTextFieldUI.java | 9 +++++---- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7ca9f02..7966edd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ FlatLaf Change Log radio button is used as table cell renderer. (issue #77) - FileChooser: Fixed missing labels in file chooser when running on Java 9 or later. (issue #98) +- PasswordField: Do not apply minimum width if `columns` property is greater + than zero. ## 0.34 diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java index b02249a5..c50de824 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java @@ -16,7 +16,6 @@ package com.formdev.flatlaf.ui; -import static com.formdev.flatlaf.util.UIScale.scale; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; @@ -175,18 +174,11 @@ public class FlatPasswordFieldUI @Override public Dimension getPreferredSize( JComponent c ) { - return applyMinimumWidth( super.getPreferredSize( c ), c ); + return FlatTextFieldUI.applyMinimumWidth( super.getPreferredSize( c ), minimumWidth, c ); } @Override public Dimension getMinimumSize( JComponent c ) { - return applyMinimumWidth( super.getMinimumSize( c ), c ); - } - - private Dimension applyMinimumWidth( Dimension size, JComponent c ) { - int minimumWidth = FlatUIUtils.minimumWidth( getComponent(), this.minimumWidth ); - float focusWidth = FlatUIUtils.getBorderFocusWidth( c ); - size.width = Math.max( size.width, scale( minimumWidth ) + Math.round( focusWidth * 2 ) ); - return size; + return FlatTextFieldUI.applyMinimumWidth( super.getMinimumSize( c ), minimumWidth, c ); } } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java index f3c1547f..14576072 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java @@ -213,26 +213,27 @@ public class FlatTextFieldUI @Override public Dimension getPreferredSize( JComponent c ) { - return applyMinimumWidth( super.getPreferredSize( c ), c ); + return applyMinimumWidth( super.getPreferredSize( c ), minimumWidth, c ); } @Override public Dimension getMinimumSize( JComponent c ) { - return applyMinimumWidth( super.getMinimumSize( c ), c ); + return applyMinimumWidth( super.getMinimumSize( c ), minimumWidth, c ); } - private Dimension applyMinimumWidth( Dimension size, JComponent c ) { + static Dimension applyMinimumWidth( Dimension size, int minimumWidth, JComponent c ) { // do not apply minimum width if JTextField.columns is set if( c instanceof JTextField && ((JTextField)c).getColumns() > 0 ) return size; + // do not apply minimum width if used in combobox or spinner Container parent = c.getParent(); if( parent instanceof JComboBox || parent instanceof JSpinner || (parent != null && parent.getParent() instanceof JSpinner) ) return size; - int minimumWidth = FlatUIUtils.minimumWidth( getComponent(), this.minimumWidth ); + minimumWidth = FlatUIUtils.minimumWidth( c, minimumWidth ); float focusWidth = FlatUIUtils.getBorderFocusWidth( c ); size.width = Math.max( size.width, scale( minimumWidth ) + Math.round( focusWidth * 2 ) ); return size;