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.cpp;h=f6bc9169c46ec9f975f042dc447f0afbdc6d17aa;hp=47b0115f3e3190af02cfc4e3407611993031aeba;hb=refs%2Fchanges%2F33%2F37133%2F3;hpb=f3cd2c3c30817bbb889e8ba8ce6b1106a1617e82 diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index 47b0115..f6bc916 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -951,6 +951,7 @@ void Controller::ReplaceTextEvent( const std::string& text ) mImpl->mLogicalModel->mLineBreakInfo.Clear(); mImpl->mLogicalModel->mWordBreakInfo.Clear(); mImpl->mLogicalModel->mBidirectionalParagraphInfo.Clear(); + mImpl->mLogicalModel->mCharacterDirections.Clear(); mImpl->mLogicalModel->mBidirectionalLineInfo.Clear(); mImpl->mLogicalModel->mLogicalToVisualMap.Clear(); mImpl->mLogicalModel->mVisualToLogicalMap.Clear(); @@ -1003,6 +1004,7 @@ void Controller::InsertTextEvent( const std::string& text ) mImpl->mLogicalModel->mLineBreakInfo.Clear(); mImpl->mLogicalModel->mWordBreakInfo.Clear(); mImpl->mLogicalModel->mBidirectionalParagraphInfo.Clear(); + mImpl->mLogicalModel->mCharacterDirections.Clear(); mImpl->mLogicalModel->mBidirectionalLineInfo.Clear(); mImpl->mLogicalModel->mLogicalToVisualMap.Clear(); mImpl->mLogicalModel->mVisualToLogicalMap.Clear(); @@ -1067,6 +1069,7 @@ void Controller::DeleteTextEvent() mImpl->mLogicalModel->mLineBreakInfo.Clear(); mImpl->mLogicalModel->mWordBreakInfo.Clear(); mImpl->mLogicalModel->mBidirectionalParagraphInfo.Clear(); + mImpl->mLogicalModel->mCharacterDirections.Clear(); mImpl->mLogicalModel->mBidirectionalLineInfo.Clear(); mImpl->mLogicalModel->mLogicalToVisualMap.Clear(); mImpl->mLogicalModel->mVisualToLogicalMap.Clear(); @@ -1208,8 +1211,21 @@ void Controller::UpdateModel( OperationsMask operationsRequired ) // TODO: consider if the mirrored string can be stored as well. textMirrored = GetMirroredText( utf32Characters, mirroredUtf32Characters ); + + // Only set the character directions if there is right to left characters. + Vector& directions = mImpl->mLogicalModel->mCharacterDirections; + directions.Resize( numberOfCharacters ); + + GetCharactersDirection( bidirectionalInfo, + directions ); } - } + else + { + // There is no right to left characters. Clear the directions vector. + mImpl->mLogicalModel->mCharacterDirections.Clear(); + } + + } Vector& glyphs = mImpl->mVisualModel->mGlyphs; Vector& glyphsToCharactersMap = mImpl->mVisualModel->mGlyphsToCharacters;