[NUI] Fix text padding issue
authorBowon Ryu <bowon.ryu@samsung.com>
Fri, 29 Dec 2023 06:06:24 +0000 (15:06 +0900)
committerJaehyun Cho <jaehyun0cho@gmail.com>
Thu, 4 Jan 2024 10:14:10 +0000 (19:14 +0900)
This patch solves the problem that text with padding does not work in nui layout.

For text components, the control's padding is used to calculatie size in native,
so it should not be set to zero value.

This avoids setting padding to zero when it comes to text layout.

Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
src/Tizen.NUI/src/public/BaseComponents/TextEditor.cs
src/Tizen.NUI/src/public/BaseComponents/TextField.cs
src/Tizen.NUI/src/public/BaseComponents/TextLabel.cs
src/Tizen.NUI/src/public/BaseComponents/View.cs

index 1a89d56c0d2d6a4bec269756ed984b30d033cb1e..fcececcc55b60fed35a2c220f8b8f38000644041 100755 (executable)
@@ -2818,7 +2818,7 @@ namespace Tizen.NUI.BaseComponents
             GrabHandleColor = new Color(r, g, b, a);
         }
 
-        private class TextEditorLayout : LayoutItem
+        internal class TextEditorLayout : LayoutItem
         {
             protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
             {
index e7651a8a0abd6d1ff8932abf9056f4f54ee7b2d1..c7b1d8b46e859739b791a6c205043b264a607064 100755 (executable)
@@ -2825,7 +2825,7 @@ namespace Tizen.NUI.BaseComponents
             GrabHandleColor = new Color(r, g, b, a);
         }
 
-        private class TextFieldLayout : LayoutItem
+        internal class TextFieldLayout : LayoutItem
         {
             protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
             {
index b3d9c61e77f96d55caa864b54a3f3aec64be302a..ebb6b79d02c711e9e58a752f85c4169a28706ed5 100755 (executable)
@@ -33,7 +33,7 @@ namespace Tizen.NUI.BaseComponents
     /// <since_tizen> 3 </since_tizen>
     public partial class TextLabel : View
     {
-        private class TextLayout : LayoutItem
+        internal class TextLabelLayout : LayoutItem
         {
             protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
             {
@@ -1659,7 +1659,7 @@ namespace Tizen.NUI.BaseComponents
 
         internal override LayoutItem CreateDefaultLayout()
         {
-            return new TextLayout();
+            return new TextLabelLayout();
         }
 
         /// <summary>
index f46d50cfb3001e6fe24364095442f4226ed656c6..1a0a176dd094fa2a9e4aeeac55cf7cc1eaa6db45 100755 (executable)
@@ -3008,7 +3008,13 @@ namespace Tizen.NUI.BaseComponents
                             setMargin = true;
                         }
 
-                        if (padding.Top != 0 || padding.Bottom != 0 || padding.Start != 0 || padding.End != 0)
+                        // The calculation of the native size of the text component requires padding.
+                        // Don't overwrite the zero padding.
+                        bool isTextLayout = (value is Tizen.NUI.BaseComponents.TextLabel.TextLabelLayout) ||
+                                            (value is Tizen.NUI.BaseComponents.TextField.TextFieldLayout) ||
+                                            (value is Tizen.NUI.BaseComponents.TextEditor.TextEditorLayout);
+
+                        if (!isTextLayout && (padding.Top != 0 || padding.Bottom != 0 || padding.Start != 0 || padding.End != 0))
                         {
                             // If View already has a padding set then store it in Layout instead.
                             value.Padding = padding;