X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fimage-view%2Fimage-view-impl.cpp;h=edff0e3402a84ea3815f3482e7b6c6a2cf93eab9;hp=b2814a45a8fb8377683c167340eb626e57da050f;hb=4019119f94f02948f2dc26a8495d44d1143c684a;hpb=736d0519550d784c776d594936af1c60f2670a14 diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp index b2814a4..edff0e3 100755 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -65,7 +65,8 @@ using namespace Dali; ImageView::ImageView() : Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ), - mImageSize() + mImageSize(), + mImageVisualPaddingSetByTransform( false ) { } @@ -293,7 +294,8 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) Extents padding = Self().GetProperty( Toolkit::Control::Property::PADDING ); const Visual::FittingMode fittingMode = Toolkit::GetImplementation(mVisual).GetFittingMode(); - if( ( padding != Extents() ) || // If padding is not zero + bool zeroPadding = ( padding == Extents() ); + if( ( !zeroPadding ) || // If padding is not zero ( fittingMode == Visual::FittingMode::FIT_KEEP_ASPECT_RATIO ) ) { Dali::LayoutDirection::Type layoutDirection = static_cast( @@ -305,6 +307,7 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) } auto finalOffset = Vector2( padding.start, padding.top ); + mImageVisualPaddingSetByTransform = true; // remove padding from the size to know how much is left for the visual auto finalSize = size - Vector2( padding.start + padding.end, padding.top + padding.bottom ); @@ -335,6 +338,15 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ); } + else if ( mImageVisualPaddingSetByTransform && zeroPadding ) // Reset offset to zero only if padding applied previously + { + mImageVisualPaddingSetByTransform = false; + // Reset the transform map + transformMap.Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2::ZERO ) + .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, + Vector2( Toolkit::Visual::Transform::Policy::RELATIVE, Toolkit::Visual::Transform::Policy::RELATIVE ) ); + } + mVisual.SetTransformAndSize( transformMap, size ); }