From 3f3faecce3d51b088e3a8925565366a382fd6acf Mon Sep 17 00:00:00 2001 From: Joogab Yun Date: Thu, 2 May 2019 16:35:30 +0900 Subject: [PATCH] [Tizen] Fixed an incorrect ellipsis MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- dali-toolkit/internal/text/rendering/view-model.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; -- 2.7.4