[Tizen] Fix cursor position issue 18/303518/1 accepted/tizen/7.0/unified/20240104.073236
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 07:36:09 +0000 (16:36 +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 315d6bc..59843ca 100644 (file)
@@ -732,7 +732,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 bd3de4e..b9174bc 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);
   }