From 0b342acec974b27512838040f43336b3965c567a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 9 Jul 2021 15:14:29 +0200 Subject: [PATCH] PasswordField: paint caps lock icon on left side in right-to-left component orientation --- CHANGELOG.md | 2 ++ .../java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e1d84ab..b1f98c5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,8 @@ FlatLaf Change Log - OptionPane: Align wrapped lines to the right if component orientation is right-to-left. (issue #350) - PasswordField: Caps lock icon no longer painted over long text. (issue #172) +- PasswordField: Paint caps lock icon on left side in right-to-left component + orientation. - Window decorations: Window title bar width is no longer considered when calculating preferred/minimum width of window. (issue #351) 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 661fe8c9..e1f74421 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 @@ -177,7 +177,9 @@ public class FlatPasswordFieldUI JTextComponent c = getComponent(); int y = (c.getHeight() - capsLockIcon.getIconHeight()) / 2; - int x = c.getWidth() - capsLockIcon.getIconWidth() - y; + int x = c.getComponentOrientation().isLeftToRight() + ? c.getWidth() - capsLockIcon.getIconWidth() - y + : y; capsLockIcon.paintIcon( c, g, x, y ); } @@ -202,6 +204,8 @@ public class FlatPasswordFieldUI if( !isCapsLockVisible() ) return padding; - return FlatUIUtils.addInsets( padding, new Insets( 0, 0, 0, capsLockIcon.getIconWidth() ) ); + boolean ltr = getComponent().getComponentOrientation().isLeftToRight(); + int iconWidth = capsLockIcon.getIconWidth(); + return FlatUIUtils.addInsets( padding, new Insets( 0, ltr ? 0 : iconWidth, 0, ltr ? iconWidth : 0 ) ); } }