diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs index dec5c382c9..ef392cd2af 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/TextNode.cs @@ -27,7 +27,7 @@ namespace Avalonia.Rendering.SceneGraph Point origin, IFormattedTextImpl text, IDictionary childScenes = null) - : base(text.Bounds, transform, null) + : base(text.Bounds.Translate(origin), transform, null) { Transform = transform; Foreground = foreground?.ToImmutable(); diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/TextNodeTests.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/TextNodeTests.cs new file mode 100644 index 0000000000..7c5ec5ddfd --- /dev/null +++ b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/TextNodeTests.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Avalonia.Platform; +using Avalonia.Rendering.SceneGraph; +using Moq; +using Xunit; + +namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph +{ + public class TextNodeTests + { + [Fact] + public void Bounds_Should_Be_Offset_By_Origin() + { + var target = new TextNode( + Matrix.Identity, + null, + new Point(10, 10), + Mock.Of(x => x.Bounds == new Rect(5, 5, 50, 50))); + + Assert.Equal(new Rect(15, 15, 50, 50), target.Bounds); + } + } +}