From fbac42bd903f8878efe9e5ecf3c8cca3f217acbb Mon Sep 17 00:00:00 2001 From: Agnelo Vaz Date: Tue, 16 Apr 2019 16:25:16 +0100 Subject: [PATCH 1/1] Control impl layout code for Margin removed Change-Id: I23195c78aeb7c9d385c78b9e3d30428a7529e266 --- dali-toolkit/public-api/controls/control-impl.cpp | 48 +++++++++-------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 1804809..d8cd9f8 100755 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -658,44 +658,32 @@ void Control::OnRelayout( const Vector2& size, RelayoutContainer& container ) Actor child = Self().GetChildAt( i ); Vector2 newChildSize( size ); - // When setting the padding or margin on the control child should be resized and repositioned for legacy reasons. + // When set the padding or margin on the control, child should be resized and repositioned. if( ( mImpl->mPadding.start != 0 ) || ( mImpl->mPadding.end != 0 ) || ( mImpl->mPadding.top != 0 ) || ( mImpl->mPadding.bottom != 0 ) || ( mImpl->mMargin.start != 0 ) || ( mImpl->mMargin.end != 0 ) || ( mImpl->mMargin.top != 0 ) || ( mImpl->mMargin.bottom != 0 ) ) { - // Cannot use childs Position property as it can already have margin applied on it, - // so we end up cumulatively applying them over and over again. - Toolkit::Control childControl = Toolkit::Control::DownCast( child ); - - // If control not a LayoutItem layout then must be the old Relayout algorithm hence account - // for margins and padding. - // Padding is incorrect but may have to keep this functionality for compatibility. - if ( childControl && ! Toolkit::DevelControl::GetLayout( childControl ) ) - { - Extents padding = mImpl->mPadding; + Extents padding = mImpl->mPadding; - Dali::CustomActor ownerActor(GetOwner()); - Dali::LayoutDirection::Type layoutDirection = static_cast( ownerActor.GetProperty( Dali::Actor::Property::LAYOUT_DIRECTION ).Get() ); + Dali::CustomActor ownerActor(GetOwner()); + Dali::LayoutDirection::Type layoutDirection = static_cast( ownerActor.GetProperty( Dali::Actor::Property::LAYOUT_DIRECTION ).Get() ); - if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection ) - { - std::swap( padding.start, padding.end ); - } + if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection ) + { + std::swap( padding.start, padding.end ); + } - // Child size should include padding, this is the wrong use of padding but kept for compatibility. - 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 ); - // 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 ); + // 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( childOffset.x, childOffset.y ); - } + child.SetPosition( childOffset.x, childOffset.y ); } - - container.Add( child, size ); + container.Add( child, newChildSize ); } Toolkit::Visual::Base visual = mImpl->GetVisual( Toolkit::Control::Property::BACKGROUND ); -- 2.7.4