From: Paul Wisbey Date: Thu, 5 Mar 2015 09:39:37 +0000 (+0000) Subject: TextLabel property fixes X-Git-Tag: new_text_0.1~17 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=c6b64a162088c12ef1b69aa40234e6d4dd772763 TextLabel property fixes Change-Id: Iaadf7aa6c8dbb3560e790efe0018329b963224d9 --- 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 9e20046..2bdacc4 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -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.RequestTextRelayout(); } 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 ); + impl.RequestTextRelayout(); } break; } @@ -141,6 +143,13 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde 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; } @@ -149,7 +158,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde { if( impl.mController ) { - value = impl.mController->GetLayoutEngine().GetLayout(); + value = static_cast( LayoutEngine::MULTI_LINE_BOX == impl.mController->GetLayoutEngine().GetLayout() ); } break; } @@ -176,21 +185,30 @@ float TextLabel::GetHeightForWidth( float width ) void TextLabel::OnRelayout( const Vector2& size, ActorSizeContainer& container ) { - if( mController->Relayout( size ) ) + if( mController->Relayout( size ) || + !mRenderer ) { if( !mRenderer ) { mRenderer = Backend::Get().NewRenderer( mRenderingBackend ); } + RenderableActor renderableActor; if( mRenderer ) { - Actor renderableActor = mRenderer->Render( mController->GetView() ); + renderableActor = mRenderer->Render( mController->GetView() ); + } + + if( renderableActor != mRenderableActor ) + { + UnparentAndReset( mRenderableActor ); if( renderableActor ) { Self().Add( renderableActor ); } + + mRenderableActor = renderableActor; } } } diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.h b/dali-toolkit/internal/controls/text-controls/text-label-impl.h index b0c2232..5c62137 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.h @@ -119,6 +119,7 @@ private: // Data Text::ControllerPtr mController; Text::RendererPtr mRenderer; + RenderableActor mRenderableActor; unsigned int mRenderingBackend; }; diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 2b90bc3..f12ba5b 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -307,6 +307,18 @@ void Controller::SetText( const std::string& text ) } } +void Controller::GetText( std::string& text ) +{ + if( !mImpl->mNewText.empty() ) + { + text = mImpl->mNewText; + } + else + { + // TODO - Convert from UTF-32 + } +} + void Controller::EnableTextInput( DecoratorPtr decorator ) { if( !mImpl->mTextInput ) @@ -480,6 +492,9 @@ bool Controller::DoRelayout( const Vector2& size, OperationsMask operations ) Vector3 Controller::GetNaturalSize() { + // TODO - Finish implementing + return Vector3::ZERO; + // Operations that can be done only once until the text changes. const OperationsMask onlyOnceOperations = static_cast( CONVERT_TO_UTF32 | GET_SCRIPTS | diff --git a/dali-toolkit/internal/text/text-controller.h b/dali-toolkit/internal/text/text-controller.h index f5ae6ba..8857203 100644 --- a/dali-toolkit/internal/text/text-controller.h +++ b/dali-toolkit/internal/text/text-controller.h @@ -97,6 +97,13 @@ public: void SetText( const std::string& text ); /** + * @brief Retrieve any text previously set. + * + * @return A string of UTF-8 characters. + */ + void GetText( std::string& text ); + + /** * @brief Called to enable text input. * * @note Only selectable or editable controls should calls this.