X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller-impl.cpp;h=d5edfc3e44652acaf2c7b64ed832a82c736ca803;hb=10f0460155a75c3829242df27171a4f3161385b1;hp=b0aa82e1372af2ef5e9e61d20b50026663bf0578;hpb=8a647e87a01c5c78451653c1264a9eea81ac9b20;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-controller-impl.cpp b/dali-toolkit/internal/text/text-controller-impl.cpp index b0aa82e..d5edfc3 100644 --- a/dali-toolkit/internal/text/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/text-controller-impl.cpp @@ -959,7 +959,7 @@ bool Controller::Impl::UpdateModel( OperationsMask operationsRequired ) // Get the default font's description. TextAbstraction::FontDescription defaultFontDescription; - TextAbstraction::PointSize26Dot6 defaultPointSize = TextAbstraction::FontClient::DEFAULT_POINT_SIZE; + TextAbstraction::PointSize26Dot6 defaultPointSize = TextAbstraction::FontClient::DEFAULT_POINT_SIZE * mFontSizeScale; if( IsShowingPlaceholderText() && mEventData && ( NULL != mEventData->mPlaceholderFont ) ) { @@ -967,7 +967,7 @@ bool Controller::Impl::UpdateModel( OperationsMask operationsRequired ) defaultFontDescription = mEventData->mPlaceholderFont->mFontDescription; if( mEventData->mPlaceholderFont->sizeDefined ) { - defaultPointSize = mEventData->mPlaceholderFont->mDefaultPointSize * 64u; + defaultPointSize = mEventData->mPlaceholderFont->mDefaultPointSize * mFontSizeScale * 64u; } } else if( NULL != mFontDefaults ) @@ -981,7 +981,7 @@ bool Controller::Impl::UpdateModel( OperationsMask operationsRequired ) } else { - defaultPointSize = mFontDefaults->mDefaultPointSize * 64u; + defaultPointSize = mFontDefaults->mDefaultPointSize * mFontSizeScale * 64u; } } @@ -1332,11 +1332,11 @@ float Controller::Impl::GetDefaultFontLineHeight() if( NULL == mFontDefaults ) { TextAbstraction::FontDescription fontDescription; - defaultFontId = mFontClient.GetFontId( fontDescription ); + defaultFontId = mFontClient.GetFontId( fontDescription, TextAbstraction::FontClient::DEFAULT_POINT_SIZE * mFontSizeScale ); } else { - defaultFontId = mFontDefaults->GetFontId( mFontClient ); + defaultFontId = mFontDefaults->GetFontId( mFontClient, mFontDefaults->mDefaultPointSize * mFontSizeScale ); } Text::FontMetrics fontMetrics; @@ -1422,6 +1422,38 @@ void Controller::Impl::SetTextSelectionRange(const uint32_t *pStart, const uint3 } } +CharacterIndex Controller::Impl::GetPrimaryCursorPosition() const +{ + if( nullptr == mEventData ) + { + return 0; + } + return mEventData->mPrimaryCursorPosition; +} + +bool Controller::Impl::SetPrimaryCursorPosition( CharacterIndex index ) +{ + if( nullptr == mEventData ) + { + // Nothing to do if there is no text. + return false; + } + + if( mEventData->mPrimaryCursorPosition == index ) + { + // Nothing for same cursor position. + return false; + } + + uint32_t length = static_cast(mModel->mLogicalModel->mText.Count()); + mEventData->mPrimaryCursorPosition = std::min(index, length); + ChangeState( EventData::EDITING ); + mEventData->mLeftSelectionPosition = mEventData->mRightSelectionPosition = mEventData->mPrimaryCursorPosition; + mEventData->mUpdateCursorPosition = true; + ScrollTextToMatchCursor(); + return true; +} + Uint32Pair Controller::Impl::GetTextSelectionRange() const { Uint32Pair range; @@ -2675,6 +2707,13 @@ void Controller::Impl::ScrollTextToMatchCursor( const CursorInfo& cursorInfo ) ScrollToMakePositionVisible( cursorInfo.primaryPosition, cursorInfo.lineHeight ); } +void Controller::Impl::ScrollTextToMatchCursor() +{ + CursorInfo cursorInfo; + GetCursorPosition( mEventData->mPrimaryCursorPosition, cursorInfo ); + ScrollTextToMatchCursor(cursorInfo); +} + void Controller::Impl::RequestRelayout() { if( NULL != mControlInterface )