From 73b96a6e5f5ba470ff29c94c15256f68d3521a5c Mon Sep 17 00:00:00 2001 From: Agnelo Vaz Date: Tue, 1 Aug 2017 14:35:38 +0100 Subject: [PATCH] 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 --- dali-toolkit/internal/controls/image-view/image-view-impl.cpp | 6 ++++++ 1 file changed, 6 insertions(+) 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; -- 2.7.4