[5.0] Workaround in AbsoluteLayout for animation bug in legacy application. 64/194664/1 accepted/tizen/5.0/unified/20181207.061437 submit/tizen_5.0/20181207.015539
authorAnton Obzhirov <a.obzhirov@samsung.com>
Thu, 6 Dec 2018 15:18:23 +0000 (15:18 +0000)
committerHeeyong Song <heeyong.song@samsung.com>
Fri, 7 Dec 2018 01:07:53 +0000 (10:07 +0900)
Change-Id: I0c1deadbc2cd1a53191ed7c1f7516170b8059cb4

dali-toolkit/internal/layouting/absolute-layout-impl.cpp

index 8a635af..ebd70a7 100644 (file)
@@ -99,6 +99,15 @@ void AbsoluteLayout::OnMeasure( MeasureSpec widthMeasureSpec, MeasureSpec height
       // Determine the width and height needed by the children using their given position and size.
       // Children could overlap so find the left most and right most child.
       auto childPosition = childOwner.GetProperty< Vector3 >( Actor::Property::POSITION );
+      auto childSize = childOwner.GetProperty< Vector3 >( Actor::Property::SIZE );
+
+      // Check if there on going position or size animation and skip it to avoid legacy application regressions
+      if( childPosition != childOwner.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ) ||
+          childSize != childOwner.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ) )
+      {
+        break;
+      }
+
       LayoutLength childLeft = childPosition.x;
       LayoutLength childTop = childPosition.y;
 
@@ -158,6 +167,14 @@ void AbsoluteLayout::OnLayout( bool changed, LayoutLength left, LayoutLength top
       LayoutLength childHeight = childLayout->GetMeasuredHeight();
 
       auto childPosition = childOwner.GetProperty< Vector3 >( Actor::Property::POSITION );
+      auto childSize = childOwner.GetProperty< Vector3 >( Actor::Property::SIZE );
+
+      // Check if there on going position or size animation and skip it to avoid legacy application regressions
+      if( childPosition != childOwner.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ) ||
+          childSize != childOwner.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ) )
+      {
+        break;
+      }
 
       LayoutLength childTop = childPosition.y;
       LayoutLength childLeft = childPosition.x;