TextBlock TextTrimming=CharacterEllipsis, TextWrapping=Wrap, MaxLines="2" does not always show ellipsis
Describe the bug
TextBlock TextTrimming=CharacterEllipsis with TextWrapping=Wrap and MaxLines="2" does not always show ellipsis
To Reproduce
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="MultiLineTextTrimmingBug.MainWindow"
Title="MultiLineTextTrimmingBug">
<TextBlock Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"
MaxLines="2" />
</Window>
Expected behavior
TextBlock TextTrimming=CharacterEllipsis with TextWrapping=Wrap show ellipsis when needed
Avalonia version
11.1.5, 11.2.2
OS
Windows, macOS
Additional context
In WPF there is no MaxLines but tested with LineHeight/MaxHeight and it works correctly:
<TextBlock Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"
LineHeight="24"
MaxHeight="48" />
<!-- MaxLines="2" is done using LineHeight/MaxHeight -->
We've noticed this in 11.3 too.
I tracked the problem down to this line. The "Collapsing" system invoked here only trims text if there isn't enough space for the entire line to fit within the text layout. But if MaxLines or MaxHeight are in effect, then trimming occurs even if the current line has enough space for all of its characters.
@Gillibald, there needs to be a way to force the collapsing system to always add an ellipsis to a line of text, regardless of its size.