From 43255aba62db53f6a8f042687687141fb9de8aa1 Mon Sep 17 00:00:00 2001 From: Bowon Ryu Date: Tue, 30 Nov 2021 12:07:36 +0900 Subject: [PATCH] Fix text relayouter update issue When the size of the text control is 0, there is a issue that the mRequestedNumberOfCharacters becomes 0 even if the actural text exists. This patch avoids this issue by updating mNumberOfCharactersToAdd in textUpdateInfo in that situation. Change-Id: I440b39f846aa7c9c410a1d121dae7b8a63b811ae Signed-off-by: Bowon Ryu --- .../internal/text/text-controller-relayouter.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dali-toolkit/internal/text/text-controller-relayouter.cpp b/dali-toolkit/internal/text/text-controller-relayouter.cpp index 3013b73..ce40c60 100644 --- a/dali-toolkit/internal/text/text-controller-relayouter.cpp +++ b/dali-toolkit/internal/text/text-controller-relayouter.cpp @@ -79,7 +79,13 @@ Size Controller::Relayouter::CalculateLayoutSizeOnRequiredControllerSize(Control GET_GLYPH_METRICS); // Set the update info to relayout the whole text. - TextUpdateInfo& textUpdateInfo = impl.mTextUpdateInfo; + TextUpdateInfo& textUpdateInfo = impl.mTextUpdateInfo; + if((0 == textUpdateInfo.mNumberOfCharactersToAdd) && + (0 == textUpdateInfo.mPreviousNumberOfCharacters) && + ((visualModel->mControlSize.width < Math::MACHINE_EPSILON_1000) || (visualModel->mControlSize.height < Math::MACHINE_EPSILON_1000))) + { + textUpdateInfo.mNumberOfCharactersToAdd = model->mLogicalModel->mText.Count(); + } textUpdateInfo.mParagraphCharacterIndex = 0u; textUpdateInfo.mRequestedNumberOfCharacters = model->mLogicalModel->mText.Count(); @@ -213,10 +219,10 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const { ModelPtr& model = impl.mModel; - bool actualellipsis = model->mElideEnabled; - float minPointSize = impl.mTextFitMinSize; - float maxPointSize = impl.mTextFitMaxSize; - float pointInterval = impl.mTextFitStepSize; + bool actualellipsis = model->mElideEnabled; + float minPointSize = impl.mTextFitMinSize; + float maxPointSize = impl.mTextFitMaxSize; + float pointInterval = impl.mTextFitStepSize; float currentFitPointSize = impl.mFontDefaults->mFitPointSize; model->mElideEnabled = false; @@ -256,7 +262,7 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const } } - model->mElideEnabled = actualellipsis; + model->mElideEnabled = actualellipsis; if(currentFitPointSize != pointSizeArray[bestSizeIndex]) { impl.mTextFitChanged = true; -- 2.7.4