From: Seoyeon Kim Date: Tue, 16 Oct 2018 07:03:43 +0000 (+0900) Subject: Add to request Relayout when connected to Stage X-Git-Tag: dali_1.3.47~10^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=5f339dfbdc685ce6d08415f97931fe0154bffb4e Add to request Relayout when connected to Stage Change-Id: I82fd90a662ea52a8b1bf4025fa2c08a30f65de9a Signed-off-by: Seoyeon Kim --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp index 49da596..46ba80b 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp @@ -3412,3 +3412,53 @@ int UtcDaliLayouting_SetLayout(void) END_TEST; } + +int UtcDaliLayouting_StageAdd(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliLayouting_StageAdd"); + + Stage stage = Stage::GetCurrent(); + + AbsoluteLayout absoluteLayout = AbsoluteLayout::New(); + Control container = Control::New(); + container.SetName( "Container" ); + DevelControl::SetLayout( container, absoluteLayout ); + container.SetAnchorPoint( Dali::AnchorPoint::CENTER ); + container.SetParentOrigin( Dali::ParentOrigin::CENTER ); + + Control child = Control::New(); + child.SetAnchorPoint( Dali::AnchorPoint::TOP_LEFT ); + child.SetPosition( 0.0f, 0.0f ); + child.SetSize( 480.0f, 180.0f ); + child.SetName( "Child Control" ); + container.Add( child ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( container.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( child.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( container.GetProperty( Actor::Property::SIZE ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); // Not re-laid out + DALI_TEST_EQUALS( child.GetProperty( Actor::Property::SIZE ), Vector3( 480.0f, 180.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + // Add container to stage here + // Should call RequestLayout() to measure and layout + stage.Add( container ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( container.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( child.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + DALI_TEST_EQUALS( container.GetProperty( Actor::Property::SIZE ), Vector3( 480.0f, 800.0f, 0.0f ), 0.0001f, TEST_LOCATION ); // Stage Size + DALI_TEST_EQUALS( child.GetProperty( Actor::Property::SIZE ), Vector3( 480.0f, 180.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; +} diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 8f862f5..1804809 100755 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -573,6 +573,9 @@ void Control::OnStageConnection( int depth ) // The clipping renderer is only created if required. CreateClippingRenderer( *this ); + + // Request to be laid out when the control is connected to the Stage. + Toolkit::DevelControl::RequestLayout( *this ); } void Control::OnStageDisconnection()