From f027ff2c95e7ccda9b28c78c57391ebe5f49f3cf Mon Sep 17 00:00:00 2001 From: Mouad Debbar Date: Fri, 17 Feb 2023 18:27:19 -0500 Subject: [PATCH] [web] Don't include end-of-line characters in line boundary (flutter/engine#39693) --- .../lib/web_ui/lib/src/engine/text/canvas_paragraph.dart | 2 +- .../flutter/lib/web_ui/test/text/canvas_paragraph_test.dart | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart index 5a8f291a785..2321f805a2a 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/text/canvas_paragraph.dart @@ -237,7 +237,7 @@ class CanvasParagraph implements ui.Paragraph { } final ParagraphLine line = lines[i]; - return ui.TextRange(start: line.startIndex, end: line.endIndex); + return ui.TextRange(start: line.startIndex, end: line.endIndex - line.trailingNewlines); } @override diff --git a/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart b/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart index c97ad8fb2b9..c7dbbecabf0 100644 --- a/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart +++ b/engine/src/flutter/lib/web_ui/test/text/canvas_paragraph_test.dart @@ -700,7 +700,8 @@ Future testMain() async { for (int i = 0; i < 11; i++) { expect( paragraph.getLineBoundary(ui.TextPosition(offset: i)), - const ui.TextRange(start: 0, end: 11), + // The "\n" is not included in the line boundary. + const ui.TextRange(start: 0, end: 10), reason: 'failed at offset $i', ); } @@ -709,7 +710,8 @@ Future testMain() async { for (int i = 11; i < 23; i++) { expect( paragraph.getLineBoundary(ui.TextPosition(offset: i)), - const ui.TextRange(start: 11, end: 23), + // The "\n" is not included in the line boundary. + const ui.TextRange(start: 11, end: 22), reason: 'failed at offset $i', ); }