TextLabel property fixes
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / text-controls / text-label-impl.cpp
index 9e20046..2bdacc4 100644 (file)
@@ -98,6 +98,7 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
         {
           impl.mRenderingBackend = static_cast< unsigned int >( backend );
           impl.mRenderer.Reset();
         {
           impl.mRenderingBackend = static_cast< unsigned int >( backend );
           impl.mRenderer.Reset();
+          impl.RequestTextRelayout();
         }
         break;
       }
         }
         break;
       }
@@ -115,6 +116,7 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
         {
           LayoutEngine::Layout layout = value.Get< bool >() ? LayoutEngine::MULTI_LINE_BOX : LayoutEngine::SINGLE_LINE_BOX;
           impl.mController->GetLayoutEngine().SetLayout( layout );
         {
           LayoutEngine::Layout layout = value.Get< bool >() ? LayoutEngine::MULTI_LINE_BOX : LayoutEngine::SINGLE_LINE_BOX;
           impl.mController->GetLayoutEngine().SetLayout( layout );
+          impl.RequestTextRelayout();
         }
         break;
       }
         }
         break;
       }
@@ -141,6 +143,13 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde
 
       case Toolkit::TextLabel::PROPERTY_TEXT:
       {
 
       case Toolkit::TextLabel::PROPERTY_TEXT:
       {
+        if( impl.mController )
+        {
+          std::string text;
+          impl.mController->GetText( text );
+          value = text;
+        }
+
         DALI_LOG_WARNING( "UTF-8 text representation was discarded\n" );
         break;
       }
         DALI_LOG_WARNING( "UTF-8 text representation was discarded\n" );
         break;
       }
@@ -149,7 +158,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde
       {
         if( impl.mController )
         {
       {
         if( impl.mController )
         {
-          value = impl.mController->GetLayoutEngine().GetLayout();
+          value = static_cast<bool>( LayoutEngine::MULTI_LINE_BOX == impl.mController->GetLayoutEngine().GetLayout() );
         }
         break;
       }
         }
         break;
       }
@@ -176,21 +185,30 @@ float TextLabel::GetHeightForWidth( float width )
 
 void TextLabel::OnRelayout( const Vector2& size, ActorSizeContainer& container )
 {
 
 void TextLabel::OnRelayout( const Vector2& size, ActorSizeContainer& container )
 {
-  if( mController->Relayout( size ) )
+  if( mController->Relayout( size ) ||
+      !mRenderer )
   {
     if( !mRenderer )
     {
       mRenderer = Backend::Get().NewRenderer( mRenderingBackend );
     }
 
   {
     if( !mRenderer )
     {
       mRenderer = Backend::Get().NewRenderer( mRenderingBackend );
     }
 
+    RenderableActor renderableActor;
     if( mRenderer )
     {
     if( mRenderer )
     {
-      Actor renderableActor = mRenderer->Render( mController->GetView() );
+      renderableActor = mRenderer->Render( mController->GetView() );
+    }
+
+    if( renderableActor != mRenderableActor )
+    {
+      UnparentAndReset( mRenderableActor );
 
       if( renderableActor )
       {
         Self().Add( renderableActor );
       }
 
       if( renderableActor )
       {
         Self().Add( renderableActor );
       }
+
+      mRenderableActor = renderableActor;
     }
   }
 }
     }
   }
 }