// 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 ) )
{
defaultFontDescription = mEventData->mPlaceholderFont->mFontDescription;
if( mEventData->mPlaceholderFont->sizeDefined )
{
- defaultPointSize = mEventData->mPlaceholderFont->mDefaultPointSize * 64u;
+ defaultPointSize = mEventData->mPlaceholderFont->mDefaultPointSize * mFontSizeScale * 64u;
}
}
else if( NULL != mFontDefaults )
}
else
{
- defaultPointSize = mFontDefaults->mDefaultPointSize * 64u;
+ defaultPointSize = mFontDefaults->mDefaultPointSize * mFontSizeScale * 64u;
}
}
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;
}
}
+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<uint32_t>(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;
ScrollToMakePositionVisible( cursorInfo.primaryPosition, cursorInfo.lineHeight );
}
+void Controller::Impl::ScrollTextToMatchCursor()
+{
+ CursorInfo cursorInfo;
+ GetCursorPosition( mEventData->mPrimaryCursorPosition, cursorInfo );
+ ScrollTextToMatchCursor(cursorInfo);
+}
+
void Controller::Impl::RequestRelayout()
{
if( NULL != mControlInterface )