Merge "Fix linear layout size issue" into devel/master
authorDavid Steele <david.steele@samsung.com>
Wed, 20 Jun 2018 11:10:15 +0000 (11:10 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Wed, 20 Jun 2018 11:10:15 +0000 (11:10 +0000)
automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp
dali-toolkit/internal/layouting/linear-layout-impl.cpp

index 5fbe1e7..c081c33 100644 (file)
@@ -500,6 +500,15 @@ int UtcDaliLayouting_HboxLayout06(void)
   newHBoxLayout.SetOrientation( LinearLayout::Orientation::HORIZONTAL );
   DevelControl::SetLayout( hbox, newHBoxLayout );
 
+  hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+  hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( hbox.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 100.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+
+  // Change size specification
   hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT );
   hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::MATCH_PARENT );
 
@@ -508,6 +517,15 @@ int UtcDaliLayouting_HboxLayout06(void)
 
   DALI_TEST_EQUALS( hbox.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 480.0f, 800.0f, 0.0f ), 0.0001f, TEST_LOCATION );
 
+  // Use WRAP_CONTENT again
+  hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+  hbox.SetProperty( Toolkit::LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( hbox.GetProperty<Vector3>( Actor::Property::SIZE ), Vector3( 100.0f, 40.0f, 0.0f ), 0.0001f, TEST_LOCATION );
+
   END_TEST;
 }
 
index 9036731..003c4e6 100644 (file)
@@ -144,6 +144,9 @@ void LinearLayout::MeasureHorizontal( MeasureSpec widthMeasureSpec, MeasureSpec
     MeasuredSize::State heightState;
   } childState = { MeasuredSize::State::MEASURED_SIZE_OK, MeasuredSize::State::MEASURED_SIZE_OK };
 
+  // Reset total length
+  mTotalLength = 0;
+
   // measure children, and determine if further resolution is required
   for( unsigned int i=0; i<GetChildCount(); ++i )
   {
@@ -318,6 +321,9 @@ void LinearLayout::MeasureVertical( MeasureSpec widthMeasureSpec, MeasureSpec he
     MeasuredSize::State heightState;
   } childState = { MeasuredSize::State::MEASURED_SIZE_OK, MeasuredSize::State::MEASURED_SIZE_OK };
 
+  // Reset total length
+  mTotalLength = 0;
+
   // measure children, and determine if further resolution is required
   for( unsigned int i=0; i<GetChildCount(); ++i )
   {