From: Bowon Ryu Date: Tue, 30 Nov 2021 03:07:36 +0000 (+0900) Subject: [Tizen] Fix text relayouter update issue X-Git-Tag: accepted/tizen/6.5/unified/20211212.212900~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc0338b7f52d02af998b982fd012a579a22d040c;hp=836db7cb0e150119af782efdafb787c211847f7e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] 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 c38f92e..1171b92 100644 --- a/dali-toolkit/internal/text/text-controller-relayouter.cpp +++ b/dali-toolkit/internal/text/text-controller-relayouter.cpp @@ -78,7 +78,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(); @@ -212,10 +218,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; @@ -255,7 +261,7 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const } } - model->mElideEnabled = actualellipsis; + model->mElideEnabled = actualellipsis; if(currentFitPointSize != pointSizeArray[bestSizeIndex]) { impl.mTextFitChanged = true;