Fix the child position when Parent sets Padding
[platform/core/uifw/dali-toolkit.git] / 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 );