Avalonia icon indicating copy to clipboard operation
Avalonia copied to clipboard

TextBlock TextTrimming=CharacterEllipsis, TextWrapping=Wrap, MaxLines="2" does not always show ellipsis

Open wieslawsoltes opened this issue 1 year ago • 3 comments

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

image

wieslawsoltes avatar Nov 28 '24 10:11 wieslawsoltes

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 -->

wieslawsoltes avatar Nov 28 '24 10:11 wieslawsoltes

We've noticed this in 11.3 too.

TomEdwardsEnscape avatar Jun 05 '25 10:06 TomEdwardsEnscape

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.

TomEdwardsEnscape avatar Jun 14 '25 10:06 TomEdwardsEnscape