Fix the child position when Parent sets Padding 87/160987/9
authorSeoyeon Kim <seoyeon2.kim@samsung.com>
Tue, 21 Nov 2017 04:47:27 +0000 (13:47 +0900)
committerSeoyeon Kim <seoyeon2.kim@samsung.com>
Tue, 28 Nov 2017 02:57:18 +0000 (11:57 +0900)
Change-Id: I40015356186292f42ec2358fdfc1346623d2884e
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
dali-toolkit/public-api/controls/control-impl.cpp

index cba5308..47a12b1 100755 (executable)
@@ -657,11 +657,13 @@ void Control::OnRelayout( const Vector2& size, RelayoutContainer& container )
       newChildSize.width = size.width - ( padding.start + padding.end );
       newChildSize.height = size.height - ( padding.top + padding.bottom );
 
       newChildSize.width = size.width - ( padding.start + padding.end );
       newChildSize.height = size.height - ( padding.top + padding.bottom );
 
-      Vector3 childPosition = child.GetTargetSize();
-      childPosition.x += ( mImpl->mMargin.start + padding.start );
-      childPosition.y += ( mImpl->mMargin.top + padding.top );
+      // Cannot use childs Position property as it can already have padding and margin applied on it,
+      // so we end up cumulatively applying them over and over again.
+      Vector2 childOffset( 0.f, 0.f );
+      childOffset.x += ( mImpl->mMargin.start + padding.start );
+      childOffset.y += ( mImpl->mMargin.top + padding.top );
 
 
-      child.SetPosition( childPosition );
+      child.SetPosition( childOffset.x, childOffset.y );
     }
 
     container.Add( child, newChildSize );
     }
 
     container.Add( child, newChildSize );