Browse Source

Only add embedded controls to the visual tree if they are part of the TextLayout

pull/12695/head
Benedikt Stebner 2 years ago
parent
commit
8b0f2588fa
  1. 5
      src/Avalonia.Controls/Documents/InlineUIContainer.cs
  2. 16
      src/Avalonia.Controls/TextBlock.cs

5
src/Avalonia.Controls/Documents/InlineUIContainer.cs

@ -58,6 +58,11 @@ namespace Avalonia.Controls.Documents
internal override void BuildTextRun(IList<TextRun> textRuns)
{
if(!Child.IsMeasureValid)
{
Child.Measure(Size.Infinity);
}
textRuns.Add(new EmbeddedControlRun(Child, CreateTextRunProperties()));
}

16
src/Avalonia.Controls/TextBlock.cs

@ -679,14 +679,18 @@ namespace Avalonia.Controls
_textRuns = textRuns;
foreach (var textRun in _textRuns)
foreach (var textLine in TextLayout.TextLines)
{
if (textRun is EmbeddedControlRun controlRun &&
controlRun.Control is Control control)
foreach (var run in textLine.TextRuns)
{
VisualChildren.Add(control);
control.Measure(Size.Infinity);
if (run is DrawableTextRun drawable)
{
if (drawable is EmbeddedControlRun controlRun
&& controlRun.Control is Control control)
{
VisualChildren.Add(control);
}
}
}
}
}

Loading…
Cancel
Save