(ImageView) Restore erroneously removed APIs & Fix SetImage behaviour
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / image-view / image-view-impl.cpp
index 59a3b33..e47d1cd 100644 (file)
@@ -66,7 +66,9 @@ Toolkit::ImageView ImageView::New()
 
 void ImageView::SetImage( Image image )
 {
 
 void ImageView::SetImage( Image image )
 {
-  if( mImage != image )
+  if( ( mImage != image ) ||
+      ! mUrl.empty()      ||   // If we're changing from a URL type to an Image type
+      ! mPropertyMap.Empty() ) // If we're changing from a property map type to an Image type
   {
     mUrl.clear();
     mPropertyMap.Clear();
   {
     mUrl.clear();
     mPropertyMap.Clear();
@@ -76,11 +78,15 @@ void ImageView::SetImage( Image image )
     Actor self = Self();
     Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, image );
     mImageSize = image ? ImageDimensions( image.GetWidth(), image.GetHeight() ) : ImageDimensions( 0, 0 );
     Actor self = Self();
     Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, image );
     mImageSize = image ? ImageDimensions( image.GetWidth(), image.GetHeight() ) : ImageDimensions( 0, 0 );
+
+    RelayoutRequest();
   }
 }
 
 void ImageView::SetImage( Property::Map map )
 {
   }
 }
 
 void ImageView::SetImage( Property::Map map )
 {
+  mUrl.clear();
+  mImage.Reset();
   mPropertyMap = map;
 
   Actor self = Self();
   mPropertyMap = map;
 
   Actor self = Self();
@@ -101,11 +107,15 @@ void ImageView::SetImage( Property::Map map )
   }
 
   mImageSize = ImageDimensions( width, height );
   }
 
   mImageSize = ImageDimensions( width, height );
+
+  RelayoutRequest();
 }
 
 void ImageView::SetImage( const std::string& url, ImageDimensions size )
 {
 }
 
 void ImageView::SetImage( const std::string& url, ImageDimensions size )
 {
-  if( mUrl != url )
+  if( ( mUrl != url ) ||
+      mImage          ||       // If we're changing from an Image type to a URL type
+      ! mPropertyMap.Empty() ) // If we're changing from a property map type to a URL type
   {
     mImage.Reset();
     mPropertyMap.Clear();
   {
     mImage.Reset();
     mPropertyMap.Clear();
@@ -123,6 +133,8 @@ void ImageView::SetImage( const std::string& url, ImageDimensions size )
 
     Actor self = Self();
     Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, mUrl, mImageSize );
 
     Actor self = Self();
     Toolkit::RendererFactory::Get().ResetRenderer( mRenderer, self, mUrl, mImageSize );
+
+    RelayoutRequest();
   }
 }
 
   }
 }