From: Agnelo Vaz Date: Tue, 1 Aug 2017 13:35:38 +0000 (+0100) Subject: Ensure ImageView updates mVisual once ready/loaded X-Git-Tag: dali_1.2.52~6^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=73b96a6e5f5ba470ff29c94c15256f68d3521a5c Ensure ImageView updates mVisual once ready/loaded Previously mVisual was only updated after OnRelayout but this is too late, RelayoutRequest triggers GetNaturalSize before OnRelayout, GetNaturalSize needs mVisual to be the updated visual not the previous. Change-Id: Ib0e46af88774d866a5f6074e43437f0b173bf0f6 --- 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 7934109..491e697 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -117,6 +117,8 @@ void ImageView::SetImage( const Property::Map& map ) mPropertyMap = map; mUrl.clear(); mImage.Reset(); + mRelayoutRequired = true; + Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( mPropertyMap ); // Don't set mVisual until it is ready and shown. Getters will still use current visual. if (!mVisual) @@ -133,6 +135,7 @@ void ImageView::SetImage( const std::string& url, ImageDimensions size ) mUrl = url; mImage.Reset(); mPropertyMap.Clear(); + mRelayoutRequired = true; // Don't set mVisual until it is ready and shown. Getters will still use current visual. Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( url, size ); @@ -228,6 +231,9 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) void ImageView::OnResourceReady( Toolkit::Control control ) { + // Visual ready so update visual attached to this ImageView, following call to RelayoutRequest will use this visual. + mVisual = DevelControl::GetVisual( *this, Toolkit::ImageView::Property::IMAGE ); + if( mRelayoutRequired) { mRelayoutRequired = false;