This issue appears when ellipsis with start position is used with a large font.
textEditor.SetProperty(TextEditor::Property::POINT_SIZE, 25);
textEditor.SetProperty(Dali::Toolkit::DevelTextEditor::Property::ELLIPSIS, true);
textEditor.SetProperty(Dali::Toolkit::DevelTextEditor::Property::ELLIPSIS_POSITION, Dali::Toolkit::DevelText::EllipsisPosition::START);
Solution: Fixed early exit of loop that shift lines to up if ellipsis and multi lines and set ellipses of first line to true.
Change-Id: Ib08ee17309058bc006c0bd3867c00a10745407bc
const GlyphIndex firstMiddleIndexOfGlyphs = model->GetFirstMiddleIndexOfElidedGlyphs();
const GlyphIndex firstMiddleIndexOfGlyphs = model->GetFirstMiddleIndexOfElidedGlyphs();
+ //Test total height of lines is fit inside Controller's size
+ Length heightOfLines = 0;
+ for(Length lineIndex=0u; lineIndex < numberOfLines; lineIndex++)
+ {
+ const LineRun& tempLine = *( model->GetLines() + lineIndex);
+ heightOfLines+= (tempLine.ascender - tempLine.descender);
+ }
+
+ if(heightOfLines > data.size.height)
+ {
+ std::cout << "The heightOfLines should be less than height of controller.";
+ std::cout << " The heightOfLines is "<< heightOfLines << "and the height of controller is "<< data.size.height <<std::endl;
+ return false;
+ }
+
if( numberOfLines != 0u )
{
Length elidedLineIndex = 0u;
if( numberOfLines != 0u )
{
Length elidedLineIndex = 0u;
const GlyphIndex firstMiddleIndexOfGlyphs = textModel->GetFirstMiddleIndexOfElidedGlyphs();
const GlyphIndex secondMiddleIndexOfGlyphs = textModel->GetSecondMiddleIndexOfElidedGlyphs();
const GlyphIndex firstMiddleIndexOfGlyphs = textModel->GetFirstMiddleIndexOfElidedGlyphs();
const GlyphIndex secondMiddleIndexOfGlyphs = textModel->GetSecondMiddleIndexOfElidedGlyphs();
+ //Test total height of lines is fit inside Controller's size
+ Length heightOfLines = 0;
+ for(Length lineIndex=0u; lineIndex < numberOfLines; lineIndex++)
+ {
+ const LineRun& tempLine = *( textModel->GetLines() + lineIndex);
+ heightOfLines+= (tempLine.ascender - tempLine.descender);
+ }
+
+ if(heightOfLines > data.size.height)
+ {
+ std::cout << "The heightOfLines should be less than height of controller.";
+ std::cout << " The heightOfLines is "<< heightOfLines << "and the height of controller is "<< data.size.height <<std::endl;
+ return false;
+ }
+
if( numberOfLines != 0u )
{
Length elidedLineIndex = 0u;
if( numberOfLines != 0u )
{
Length elidedLineIndex = 0u;
linesBuffer[lineIndex].ellipsis = false;
}
numberOfLines--;
linesBuffer[lineIndex].ellipsis = false;
}
numberOfLines--;
}
linesBuffer[0u].ellipsis = true;
}
}
linesBuffer[0u].ellipsis = true;
}