From: Joogab Yun Date: Thu, 2 May 2019 07:35:30 +0000 (+0900) Subject: [Tizen] Fixed an incorrect ellipsis X-Git-Tag: accepted/tizen/5.0/unified/20190509.004735^0 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=3f3faecce3d51b088e3a8925565366a382fd6acf [Tizen] Fixed an incorrect ellipsis ex) 1. An ellipsis may be displayed incorrectly when there are two or more new-line characters. 2. The ellipsis location is incorrectly displayed for RTL text. TextLabel textLabel1 = TextLabel::New( "abcdef הגדרות מהירות "); textLabel1.SetSize( 150.f, 100.f ); textLabel1.SetProperty( TextLabel::Property::POINT_SIZE, 20.f ); textLabel1.SetProperty( TextLabel::Property::ELLIPSIS, true ); textLabel1.SetPosition( 100.f, 50.f ); textLabel1.SetParentOrigin( ParentOrigin::TOP_LEFT ); textLabel1.SetAnchorPoint( AnchorPoint::TOP_LEFT ); stage.Add( textLabel1 ); TextLabel textLabel2 = TextLabel::New( "הגדרות מהירות"); textLabel2.SetSize( 150.f, 100.f ); textLabel2.SetProperty( TextLabel::Property::POINT_SIZE, 20.f ); textLabel2.SetProperty( TextLabel::Property::ELLIPSIS, true ); textLabel2.SetPosition( 100.f, 125.f ); textLabel2.SetParentOrigin( ParentOrigin::TOP_LEFT ); textLabel2.SetAnchorPoint( AnchorPoint::TOP_LEFT ); stage.Add( textLabel2 ); TextLabel labe21 = TextLabel::New( "yesterday all my troubles seemed so far away now it looks as though they`re here to stay oh i believe in yesterday" ); labe21.SetSize( 450, 145 ); labe21.SetParentOrigin(ParentOrigin::TOP_LEFT); labe21.SetAnchorPoint(AnchorPoint::TOP_LEFT); labe21.SetPosition( 100.f, 200.f); labe21.SetProperty(TextLabel::Property::POINT_SIZE, 17.6f); labe21.SetProperty(TextLabel::Property::ELLIPSIS, true); stage.Add( labe21 ); TextLabel labe33 = TextLabel::New( "yesterday all my troubles seemed so far away\nnow it looks\n as though they`re here to stay\n\n ohi believe in yesterday" ); labe33.SetSize( 450, 145 ); labe33.SetParentOrigin(ParentOrigin::TOP_LEFT); labe33.SetAnchorPoint(AnchorPoint::TOP_LEFT); labe33.SetPosition( 100.f, 250.f); labe33.SetProperty(TextLabel::Property::POINT_SIZE, 17.6f); labe33.SetProperty( TextLabel::Property::MULTI_LINE, true ); labe33.SetProperty(TextLabel::Property::ELLIPSIS, true); stage.Add( labe33 ); TextLabel labe34 = TextLabel::New( "yesterday all my troubles seemed so\n\n\n\n far away now it looks" ); labe34.SetSize( 450, 100 ); labe34.SetParentOrigin(ParentOrigin::TOP_LEFT); labe34.SetAnchorPoint(AnchorPoint::TOP_LEFT); labe34.SetPosition( 100.f, 400.f); labe34.SetProperty(TextLabel::Property::POINT_SIZE, 17.6f); labe34.SetProperty( TextLabel::Property::MULTI_LINE, true ); labe34.SetProperty(TextLabel::Property::ELLIPSIS, true); stage.Add( labe34 ); Change-Id: Ie856e38035b5ea6d179ec23ec04a1a9371486b73 --- diff --git a/dali-toolkit/internal/text/rendering/view-model.cpp b/dali-toolkit/internal/text/rendering/view-model.cpp index 70b642f..2be6601 100755 --- a/dali-toolkit/internal/text/rendering/view-model.cpp +++ b/dali-toolkit/internal/text/rendering/view-model.cpp @@ -297,7 +297,7 @@ void ViewModel::ElideGlyphs() // Need to reshape the glyph as the font may be different in size. const GlyphInfo& ellipsisGlyph = fontClient.GetEllipsisGlyph( fontClient.GetPointSize( glyphToRemove.fontId ) ); - if( !firstPenSet ) + if( !firstPenSet || glyphToRemove.advance == 0.f ) { const Vector2& position = *( elidedPositionsBuffer + index ); @@ -332,6 +332,11 @@ void ViewModel::ElideGlyphs() glyphInfo = ellipsisGlyph; // Change the 'x' and 'y' position of the ellipsis glyph. + if( position.x > firstPenX ) + { + position.x = firstPenX + removedGlypsWidth - ellipsisGlyphWidth; + } + position.x += ellipsisGlyph.xBearing; position.y = penY - ellipsisGlyph.yBearing;