From a44ea1b60d12c879dacaa5f78b6c042b59ed6c2c Mon Sep 17 00:00:00 2001 From: Paul Wisbey Date: Mon, 2 Mar 2015 18:52:37 +0000 Subject: [PATCH] Fixed GetHeightForWidth for text label Change-Id: Ie91ab93ea2fa4fc11589baf867f468c5ceb44082 --- .../internal/controls/text-controls/text-field-impl.cpp | 10 ++++++++++ dali-toolkit/internal/controls/text-controls/text-field-impl.h | 10 ++++++++++ dali-toolkit/public-api/text/layouts/layout-engine.cpp | 5 ++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index 03dcf44..080967e 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -336,6 +336,16 @@ void TextField::OnInitialize() } } +Vector3 TextField::GetNaturalSize() +{ + return mController->GetNaturalSize(); +} + +float TextField::GetHeightForWidth( float width ) +{ + return mController->GetHeightForWidth( width ); +} + void TextField::OnRelayout( const Vector2& size, ActorSizeContainer& container ) { if( mController->Relayout( size ) ) diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.h b/dali-toolkit/internal/controls/text-controls/text-field-impl.h index 7b013f5..b6b11b1 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.h @@ -79,6 +79,16 @@ private: // From Control virtual void OnInitialize(); /** + * @copydoc Control::GetNaturalSize() + */ + virtual Vector3 GetNaturalSize(); + + /** + * @copydoc Control::GetHeightForWidth() + */ + virtual float GetHeightForWidth( float width ); + + /** * @copydoc Control::OnInitialize() */ virtual void OnRelayout( const Vector2& size, ActorSizeContainer& container ); diff --git a/dali-toolkit/public-api/text/layouts/layout-engine.cpp b/dali-toolkit/public-api/text/layouts/layout-engine.cpp index ae65e17..e6a3a63 100644 --- a/dali-toolkit/public-api/text/layouts/layout-engine.cpp +++ b/dali-toolkit/public-api/text/layouts/layout-engine.cpp @@ -102,6 +102,8 @@ struct LayoutEngine::Impl } visualModel.SetGlyphPositions( &glyphPositions[0], glyphCount ); + + visualModel.SetActualSize( Vector2(penX, fontMetrics.height) ); } } @@ -166,11 +168,12 @@ struct LayoutEngine::Impl } else if( endPenX > boundingBox.width ) { - actualSize.width = ( actualSize.width < endPenX - glyph.advance ) ? endPenX - glyph.advance : actualSize.width; break; } } + actualSize.width = ( actualSize.width < endPenX ) ? endPenX : actualSize.width; + // If end of text or no whitespace found if( glyphCount == j || endIndex == i ) -- 2.7.4