const char * const PLACEHOLDER_POINT_SIZE = "pointSize";
const char * const PLACEHOLDER_PIXEL_SIZE = "pixelSize";
const char * const PLACEHOLDER_ELLIPSIS = "ellipsis";
-const unsigned int MAX_TEXT_LENGTH = 1024u * 32u;
float ConvertToEven( float value )
{
void Controller::SetMaximumNumberOfCharacters( Length maxCharacters )
{
- mImpl->mMaximumNumberOfCharacters = std::min( maxCharacters, MAX_TEXT_LENGTH );
+ mImpl->mMaximumNumberOfCharacters = maxCharacters;
}
int Controller::GetMaximumNumberOfCharacters()
utf8 = reinterpret_cast<const uint8_t*>( text.c_str() );
}
- // Limit the text size. If the text size is too large, crash or deadlock will occur.
- if( textSize > MAX_TEXT_LENGTH )
- {
- DALI_LOG_WARNING( "The text size is too large(%d), limit the length to 32,768u\n", textSize );
- textSize = MAX_TEXT_LENGTH;
- }
-
// Convert text into UTF-32
Vector<Character>& utf32Characters = mImpl->mModel->mLogicalModel->mText;
utf32Characters.Resize( textSize );
return mImpl->mLayoutEngine.GetDefaultLineSpacing();
}
+bool Controller::SetDefaultLineSize( float lineSize )
+{
+ if( std::fabs( lineSize - mImpl->mLayoutEngine.GetDefaultLineSize() ) > Math::MACHINE_EPSILON_1000 )
+ {
+ mImpl->mLayoutEngine.SetDefaultLineSize(lineSize);
+ mImpl->mRecalculateNaturalSize = true;
+ return true;
+ }
+ return false;
+}
+
+float Controller::GetDefaultLineSize() const
+{
+ return mImpl->mLayoutEngine.GetDefaultLineSize();
+}
+
void Controller::SetInputColor( const Vector4& color )
{
if( NULL != mImpl->mEventData )
void Controller::FitPointSizeforLayout( Size layoutSize )
{
const OperationsMask operations = mImpl->mOperationsPending;
- if( NO_OPERATION != ( UPDATE_LAYOUT_SIZE & operations ) )
+ if( NO_OPERATION != ( UPDATE_LAYOUT_SIZE & operations ) || mImpl->mTextFitContentSize != layoutSize )
{
bool actualellipsis = mImpl->mModel->mElideEnabled;
float minPointSize = mImpl->mTextFitMinSize;
}
}
-void Controller::SelectEvent( float x, float y, bool selectAll )
+void Controller::SelectEvent( float x, float y, SelectionType selectType )
{
DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Controller::SelectEvent\n" );
if( NULL != mImpl->mEventData )
{
- if( selectAll )
+ if( selectType == SelectionType::ALL )
{
Event event( Event::SELECT_ALL );
mImpl->mEventData->mEventQueue.push_back( event );
}
+ else if( selectType == SelectionType::NONE )
+ {
+ Event event( Event::SELECT_NONE );
+ mImpl->mEventData->mEventQueue.push_back( event );
+ }
else
{
Event event( Event::SELECT );
if( mImpl->mEventData->mSelectionEnabled )
{
// Creates a SELECT event.
- SelectEvent( currentCursorPosition.x, currentCursorPosition.y, false );
+ SelectEvent( currentCursorPosition.x, currentCursorPosition.y, SelectionType::INTERACTIVE );
}
break;
}
case Toolkit::TextSelectionPopup::SELECT_ALL:
{
// Creates a SELECT_ALL event
- SelectEvent( 0.f, 0.f, true );
+ SelectEvent( 0.f, 0.f, SelectionType::ALL );
break;
}
case Toolkit::TextSelectionPopup::CLIPBOARD:
// it means all texts should be removed and all Preedit variables should be initialized.
if( ( currentText.Count() - numberOfCharacters == 0 ) && ( cursorIndex == 0 ) )
{
- if( mImpl->mEventData )
- {
- mImpl->mEventData->mPreEditStartPosition = 0;
- mImpl->mEventData->mPreEditLength = 0;
- }
+ mImpl->ClearPreEditFlag();
}
// Updates the text style runs by removing characters. Runs with no characters are removed.
return textRemoved;
}
+std::string Controller::GetSelectedText()
+{
+ std::string text;
+ if( EventData::SELECTING == mImpl->mEventData->mState )
+ {
+ mImpl->RetrieveSelection( text, false );
+ }
+ return text;
+}
+
// private : Relayout.
bool Controller::DoRelayout( const Size& size,