X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller-relayouter.cpp;h=c38f92e1a5a732aa610cffd41b8f43f193eab3c4;hp=062153d217e3c2411f8de8a68e93fea925f1f92a;hb=bad241077bd728d9a5ef25d59398eae889b359a1;hpb=e172c89c895d46d430b2cf0a0dbceeea0ae09b29 diff --git a/dali-toolkit/internal/text/text-controller-relayouter.cpp b/dali-toolkit/internal/text/text-controller-relayouter.cpp index 062153d..c38f92e 100644 --- a/dali-toolkit/internal/text/text-controller-relayouter.cpp +++ b/dali-toolkit/internal/text/text-controller-relayouter.cpp @@ -170,7 +170,7 @@ bool Controller::Relayouter::CheckForTextFit(Controller& controller, float point TextUpdateInfo& textUpdateInfo = impl.mTextUpdateInfo; impl.mFontDefaults->mFitPointSize = pointSize; impl.mFontDefaults->sizeDefined = true; - controller.ClearFontData(); + impl.ClearFontData(); // Operations that can be done only once until the text changes. const OperationsMask onlyOnceOperations = static_cast(CONVERT_TO_UTF32 | @@ -216,6 +216,7 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const float minPointSize = impl.mTextFitMinSize; float maxPointSize = impl.mTextFitMaxSize; float pointInterval = impl.mTextFitStepSize; + float currentFitPointSize = impl.mFontDefaults->mFitPointSize; model->mElideEnabled = false; Vector pointSizeArray; @@ -255,9 +256,13 @@ void Controller::Relayouter::FitPointSizeforLayout(Controller& controller, const } model->mElideEnabled = actualellipsis; + if(currentFitPointSize != pointSizeArray[bestSizeIndex]) + { + impl.mTextFitChanged = true; + } impl.mFontDefaults->mFitPointSize = pointSizeArray[bestSizeIndex]; impl.mFontDefaults->sizeDefined = true; - controller.ClearFontData(); + impl.ClearFontData(); } } @@ -384,7 +389,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll textUpdateInfo.mCharacterIndex = 0u; } - if(model->mMatchSystemLanguageDirection && impl.mLayoutDirection != layoutDirection) + if(impl.mLayoutDirection != layoutDirection) { // Clear the update info. This info will be set the next time the text is updated. textUpdateInfo.mClearAll = true; @@ -394,6 +399,7 @@ Controller::UpdateTextType Controller::Relayouter::Relayout(Controller& controll GET_GLYPH_METRICS | SHAPE_TEXT | UPDATE_DIRECTION | + ALIGN | LAYOUT | BIDI_INFO | REORDER); @@ -543,6 +549,7 @@ bool Controller::Relayouter::DoRelayout(Controller& controller, const Size& size // Update the ellipsis bool elideTextEnabled = impl.mModel->mElideEnabled; + auto ellipsisPosition = impl.mModel->mEllipsisPosition; if(NULL != impl.mEventData) { @@ -559,7 +566,7 @@ bool Controller::Relayouter::DoRelayout(Controller& controller, const Size& size // Reset the scroll position in inactive state if(elideTextEnabled && (impl.mEventData->mState == EventData::INACTIVE)) { - controller.ResetScrollPosition(); + impl.ResetScrollPosition(); } } @@ -569,7 +576,8 @@ bool Controller::Relayouter::DoRelayout(Controller& controller, const Size& size viewUpdated = impl.mLayoutEngine.LayoutText(layoutParameters, newLayoutSize, elideTextEnabled, - isAutoScrollEnabled); + isAutoScrollEnabled, + ellipsisPosition); impl.mIsAutoScrollEnabled = isAutoScrollEnabled; viewUpdated = viewUpdated || (newLayoutSize != layoutSize); @@ -622,7 +630,7 @@ bool Controller::Relayouter::DoRelayout(Controller& controller, const Size& size lines, impl.mModel->mAlignmentOffset, impl.mLayoutDirection, - impl.mModel->mMatchSystemLanguageDirection); + (impl.mModel->mMatchLayoutDirection != DevelText::MatchLayoutDirection::CONTENTS)); viewUpdated = true; }