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=8ced30e8ff4ed2fb239ec367e1d462caebf8e246;hp=65e043ebf74f198190061c7eac76ff2434dd2ea3;hb=refs%2Fchanges%2F76%2F135976%2F11;hpb=26d183fc49ba2b62bbd844d668f15d141efcd326 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 65e043e..8ced30e 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -87,6 +87,13 @@ Toolkit::ImageView ImageView::New() ///////////////////////////////////////////////////////////// +void ImageView::OnInitialize() +{ + // ImageView can relayout in the OnImageReady, alternative to a signal would be to have a upcall from the Control to ImageView + Dali::Toolkit::Control handle( GetOwner() ); + Toolkit::DevelControl::ResourceReadySignal( handle ).Connect( this, &ImageView::OnResourceReady ); +} + void ImageView::SetImage( Image image ) { // Don't bother comparing if we had a visual previously, just drop old visual and create new one @@ -94,10 +101,13 @@ void ImageView::SetImage( Image image ) mUrl.clear(); mPropertyMap.Clear(); - mVisual = Toolkit::VisualFactory::Get().CreateVisual( image ); - DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, mVisual ); + Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( image ); + if (!mVisual) + { + mVisual = visual; + } - RelayoutRequest(); + DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual ); } void ImageView::SetImage( const Property::Map& map ) @@ -106,11 +116,14 @@ void ImageView::SetImage( const Property::Map& map ) mPropertyMap = map; mUrl.clear(); mImage.Reset(); + 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) + { + mVisual = visual; + } - mVisual = Toolkit::VisualFactory::Get().CreateVisual( mPropertyMap ); - DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, mVisual ); - - RelayoutRequest(); + DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual ); } void ImageView::SetImage( const std::string& url, ImageDimensions size ) @@ -120,10 +133,14 @@ void ImageView::SetImage( const std::string& url, ImageDimensions size ) mImage.Reset(); mPropertyMap.Clear(); - mVisual = Toolkit::VisualFactory::Get().CreateVisual( url, size ); - DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, mVisual ); + // 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 ); + if (!mVisual) + { + mVisual = visual; + } - RelayoutRequest(); + DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual ); } Image ImageView::GetImage() const @@ -205,6 +222,11 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) } } +void ImageView::OnResourceReady( Toolkit::Control control ) +{ + mVisual = DevelControl::GetVisual( *this, Toolkit::ImageView::Property::IMAGE ); +} + /////////////////////////////////////////////////////////// // // Properties