Fix linear layout size issue 54/182054/1
authorHeeyong Song <heeyong.song@samsung.com>
Wed, 20 Jun 2018 06:08:04 +0000 (15:08 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Wed, 20 Jun 2018 06:08:04 +0000 (15:08 +0900)
Change-Id: Ic129628d5a8eba3d40f074de445e31ebd441359b

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 )
   {