From a44ea1b60d12c879dacaa5f78b6c042b59ed6c2c Mon Sep 17 00:00:00 2001
From: Paul Wisbey
Date: Mon, 2 Mar 2015 18:52:37 +0000
Subject: [PATCH 1/1] 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