From: Bowon Ryu Date: Tue, 30 Nov 2021 03:07:36 +0000 (+0900) Subject: Fix text relayouter update issue X-Git-Tag: dali_2.1.1~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=43255aba62db53f6a8f042687687141fb9de8aa1 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 --- 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;