[PATCH] Fix ActionTextField RTL
authorNate Graham <nate@kde.org>
Wed, 14 May 2025 01:53:34 +0000 (19:53 -0600)
committerAurélien COUDERC <coucouf@debian.org>
Tue, 20 May 2025 06:38:42 +0000 (08:38 +0200)
This got broken in d8cbb0fd050861a0e08fd45192d311b65d2d4dc3, which was
not technically correct; if it worked at the time, it broke since then.

This reverts d8cbb0fd050861a0e08fd45192d311b65d2d4dc3

BUG: 504091
FIXED-IN: 6.15

Gbp-Pq: Name upstream_5bf798c3_Fix-ActionTextField-RTL.patch

src/controls/ActionTextField.qml
src/controls/SearchField.qml

index a5bb2b86e44f7aa8043a6834f1981d90ca79ff66..53a7933b33069d78069f0adcfd480968ac3762af 100644 (file)
@@ -73,11 +73,12 @@ QQC2.TextField {
 
     hoverEnabled: true
 
-    // Manually setting this fixes alignment in RTL layouts
-    horizontalAlignment: TextInput.AlignLeft
+    horizontalAlignment: Qt.AlignLeft
+    LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
+    LayoutMirroring.childrenInherit: true
 
-    leftPadding: Kirigami.Units.smallSpacing + (root.effectiveHorizontalAlignment === TextInput.AlignRight ? rightActionsRow : leftActionsRow).width
-    rightPadding: Kirigami.Units.smallSpacing + (root.effectiveHorizontalAlignment === TextInput.AlignRight ? leftActionsRow : rightActionsRow).width
+    leftPadding: Kirigami.Units.smallSpacing + (LayoutMirroring.enabled ? rightActionsRow : leftActionsRow).width
+    rightPadding: Kirigami.Units.smallSpacing + (LayoutMirroring.enabled ? leftActionsRow : rightActionsRow).width
 
     Behavior on leftPadding {
         NumberAnimation {
@@ -158,7 +159,6 @@ QQC2.TextField {
         padding: Kirigami.Units.smallSpacing
         spacing: Kirigami.Units.smallSpacing
         layoutDirection: Qt.LeftToRight
-        LayoutMirroring.enabled: root.effectiveHorizontalAlignment === TextInput.AlignRight
         anchors.left: parent.left
         anchors.leftMargin: Kirigami.Units.smallSpacing
         anchors.top: parent.top
@@ -176,7 +176,6 @@ QQC2.TextField {
         padding: Kirigami.Units.smallSpacing
         spacing: Kirigami.Units.smallSpacing
         layoutDirection: Qt.RightToLeft
-        LayoutMirroring.enabled: root.effectiveHorizontalAlignment === TextInput.AlignRight
         anchors.right: parent.right
         anchors.rightMargin: Kirigami.Units.smallSpacing
         anchors.top: parent.top
index 1e4d2d282d5d6cb1eab32296b57162a22b3e0e3a..bccebd5bcf7e8cf113504ff53fc9853a7aca87f5 100644 (file)
@@ -58,12 +58,12 @@ Kirigami.ActionTextField {
     property bool delaySearch: false
 
     // padding to accommodate search icon nicely
-    leftPadding: if (effectiveHorizontalAlignment === TextInput.AlignRight) {
+    leftPadding: if (Qt.application.layoutDirection === Qt.RightToLeft) {
         return _rightActionsRow.width + Kirigami.Units.smallSpacing
     } else {
         return searchIcon.width + Kirigami.Units.smallSpacing * 3
     }
-    rightPadding: if (effectiveHorizontalAlignment === TextInput.AlignRight) {
+    rightPadding: if (Qt.application.layoutDirection === Qt.RightToLeft) {
         return searchIcon.width + Kirigami.Units.smallSpacing * 3
     } else {
         return _rightActionsRow.width + Kirigami.Units.smallSpacing
@@ -93,8 +93,7 @@ Kirigami.ActionTextField {
     EnterKey.type: Qt.EnterKeySearch
     rightActions: [
         Kirigami.Action {
-            //ltr confusingly refers to the direction of the arrow in the icon, not the text direction which it should be used in
-            icon.name: root.effectiveHorizontalAlignment === TextInput.AlignRight ? "edit-clear-locationbar-ltr" : "edit-clear-locationbar-rtl"
+            icon.name: root.LayoutMirroring.enabled ? "edit-clear-locationbar-ltr" : "edit-clear-locationbar-rtl"
             visible: root.text.length > 0
             text: qsTr("Clear search")
             onTriggered: {