Fix cursor position issue 14/303514/1
authorBowon Ryu <bowon.ryu@samsung.com>
Fri, 29 Dec 2023 05:49:36 +0000 (14:49 +0900)
committerBowon Ryu <bowon.ryu@samsung.com>
Fri, 29 Dec 2023 05:53:49 +0000 (14:53 +0900)
This patch fixes an issue where the cursor position is incorrectly positioned
when padding is set for the textfield text editor.
It is a problem caused by the wrong location of the cursor layer.

Change-Id: Ifa0e9b752160761dfd6806cfc18dbf98576c71e3
Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp
dali-toolkit/internal/controls/text-controls/text-field-impl.cpp

index a9d5c2b..4f4b709 100644 (file)
@@ -758,7 +758,9 @@ void TextEditor::OnRelayout(const Vector2& size, RelayoutContainer& container)
   }
   if(mCursorLayer)
   {
-    mCursorLayer.SetProperty(Actor::Property::POSITION, Vector2(padding.start, padding.top));
+    // The cursor layer is added to the stencil in RenderText.
+    // Do not calculate the position because the stencil has already been resized excluding the padding size.
+    // There is no case where the text editor does not have a stencil.
     ResizeActor(mCursorLayer, contentSize);
   }
 
index 7ef5425..88919fe 100644 (file)
@@ -666,7 +666,12 @@ void TextField::OnRelayout(const Vector2& size, RelayoutContainer& container)
   }
   if(mCursorLayer)
   {
-    mCursorLayer.SetProperty(Actor::Property::POSITION, Vector2(padding.start, padding.top));
+    if(!mStencil)
+    {
+      // If there is a stencil, the cursor layer is added to the stencil in RenderText.
+      // Do not calculate the position because the stencil has already been resized excluding the padding size.
+      mCursorLayer.SetProperty(Actor::Property::POSITION, Vector2(padding.start, padding.top));
+    }
     ResizeActor(mCursorLayer, contentSize);
   }