[Tizen] Ensure ImageView updates mVisual once ready/loaded 34/141834/1
authorAgnelo Vaz <agnelo.vaz@samsung.com>
Tue, 1 Aug 2017 13:35:38 +0000 (14:35 +0100)
committerJinho, Lee <jeano.lee@samsung.com>
Tue, 1 Aug 2017 14:29:42 +0000 (23:29 +0900)
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: I0a39e36d76a21b7274d0fbe49c6b954382de887e

dali-toolkit/internal/controls/image-view/image-view-impl.cpp

index fabcf19..ddf0e2e 100644 (file)
@@ -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 );
@@ -244,6 +247,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;