X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-label-impl.cpp;h=065d0f95c2483a37409e45580884e946b94d0d82;hp=77da8f9e25cbb69f674b5a5ed558267cf6d3a23d;hb=9cab36905ea3e42c011a9c278631a7836f2bfdc6;hpb=e0c3ff90edd572ae3ba104d207deb1586eae4aed diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 77da8f9..065d0f9 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -453,6 +453,7 @@ void TextLabel::OnInitialize() // Enable the text ellipsis. LayoutEngine& engine = mController->GetLayoutEngine(); engine.SetTextEllipsisEnabled( true ); + self.OnStageSignal().Connect( this, &TextLabel::OnStageConnect ); } void TextLabel::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change ) @@ -479,27 +480,47 @@ void TextLabel::OnRelayout( const Vector2& size, RelayoutContainer& container ) { mRenderer = Backend::Get().NewRenderer( mRenderingBackend ); } + RenderText(); + } +} - RenderableActor renderableActor; - if( mRenderer ) - { - renderableActor = mRenderer->Render( mController->GetView() ); - } +void TextLabel::RequestTextRelayout() +{ + RelayoutRequest(); +} - if( renderableActor != mRenderableActor ) - { - UnparentAndReset( mRenderableActor ); +void TextLabel::RenderText() +{ + Actor renderableActor; + if( mRenderer ) + { + renderableActor = mRenderer->Render( mController->GetView(), mDepth ); + } - if( renderableActor ) - { - const Vector2& alignmentOffset = mController->GetAlignmentOffset(); - renderableActor.SetPosition( alignmentOffset.x, alignmentOffset.y ); + if( renderableActor != mRenderableActor ) + { + UnparentAndReset( mRenderableActor ); - Self().Add( renderableActor ); - } + if( renderableActor ) + { + const Vector2& alignmentOffset = mController->GetAlignmentOffset(); + renderableActor.SetPosition( alignmentOffset.x, alignmentOffset.y ); - mRenderableActor = renderableActor; + Self().Add( renderableActor ); } + mRenderableActor = renderableActor; + } +} + +void TextLabel::OnStageConnect( Dali::Actor actor ) +{ + if ( mHasBeenStaged ) + { + RenderText(); + } + else + { + mHasBeenStaged = true; } } @@ -508,9 +529,9 @@ void TextLabel::AddDecoration( Actor& actor, bool needsClipping ) // TextLabel does not show decorations } -void TextLabel::RequestTextRelayout() +void TextLabel::OnStageConnection( int depth ) { - RelayoutRequest(); + mDepth = depth; } void TextLabel::TextChanged() @@ -525,7 +546,9 @@ void TextLabel::MaxLengthReached() TextLabel::TextLabel() : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ), - mRenderingBackend( DEFAULT_RENDERING_BACKEND ) + mRenderingBackend( DEFAULT_RENDERING_BACKEND ), + mDepth( 0 ), + mHasBeenStaged( false ) { }