Title: [260528] trunk
- Revision
- 260528
- Author
- [email protected]
- Date
- 2020-04-22 12:24:55 -0700 (Wed, 22 Apr 2020)
Log Message
REGRESSION (r249160): Deleting newline after pasting text ending in a newline results in a discontinuity
https://bugs.webkit.org/show_bug.cgi?id=210677
<rdar://problem/61954169>
Reviewed by Zalan Bujtas.
Source/WebCore:
Test: fast/text/delete-line-break-in-pre.html
* rendering/RenderTextLineBoxes.cpp:
(WebCore::RenderTextLineBoxes::dirtyRange):
r249160 changed InlineTextBox end offset to be consistently first-past-end.
The code here that updates lineBreakPos needs to take this into account too.
LayoutTests:
* fast/text/delete-line-break-in-pre-expected.html: Added.
* fast/text/delete-line-break-in-pre.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (260527 => 260528)
--- trunk/LayoutTests/ChangeLog 2020-04-22 19:14:59 UTC (rev 260527)
+++ trunk/LayoutTests/ChangeLog 2020-04-22 19:24:55 UTC (rev 260528)
@@ -1,3 +1,14 @@
+2020-04-22 Antti Koivisto <[email protected]>
+
+ REGRESSION (r249160): Deleting newline after pasting text ending in a newline results in a discontinuity
+ https://bugs.webkit.org/show_bug.cgi?id=210677
+ <rdar://problem/61954169>
+
+ Reviewed by Zalan Bujtas.
+
+ * fast/text/delete-line-break-in-pre-expected.html: Added.
+ * fast/text/delete-line-break-in-pre.html: Added.
+
2020-04-22 Chris Dumez <[email protected]>
Add layout test to validate the User-Agent HTTP header of XMLHttpRequest
Added: trunk/LayoutTests/fast/text/delete-line-break-in-pre-expected.html (0 => 260528)
--- trunk/LayoutTests/fast/text/delete-line-break-in-pre-expected.html (rev 0)
+++ trunk/LayoutTests/fast/text/delete-line-break-in-pre-expected.html 2020-04-22 19:24:55 UTC (rev 260528)
@@ -0,0 +1,7 @@
+<style>
+#text { white-space:pre-wrap; }
+</style>
+<div><span id=text></span></div>
+<script>
+text.textContent = "a\nb\nc\n";
+</script>
Added: trunk/LayoutTests/fast/text/delete-line-break-in-pre.html (0 => 260528)
--- trunk/LayoutTests/fast/text/delete-line-break-in-pre.html (rev 0)
+++ trunk/LayoutTests/fast/text/delete-line-break-in-pre.html 2020-04-22 19:24:55 UTC (rev 260528)
@@ -0,0 +1,9 @@
+<style>
+#text { white-space:pre-wrap; }
+</style>
+<div><span id=text></span></div>
+<script>
+text.textContent = "a\nb\n\nc\n";
+text.offsetWidth;
+text.firstChild.deleteData(3, 1);
+</script>
Modified: trunk/Source/WebCore/ChangeLog (260527 => 260528)
--- trunk/Source/WebCore/ChangeLog 2020-04-22 19:14:59 UTC (rev 260527)
+++ trunk/Source/WebCore/ChangeLog 2020-04-22 19:24:55 UTC (rev 260528)
@@ -1,3 +1,19 @@
+2020-04-22 Antti Koivisto <[email protected]>
+
+ REGRESSION (r249160): Deleting newline after pasting text ending in a newline results in a discontinuity
+ https://bugs.webkit.org/show_bug.cgi?id=210677
+ <rdar://problem/61954169>
+
+ Reviewed by Zalan Bujtas.
+
+ Test: fast/text/delete-line-break-in-pre.html
+
+ * rendering/RenderTextLineBoxes.cpp:
+ (WebCore::RenderTextLineBoxes::dirtyRange):
+
+ r249160 changed InlineTextBox end offset to be consistently first-past-end.
+ The code here that updates lineBreakPos needs to take this into account too.
+
2020-04-22 Antoine Quint <[email protected]>
[Web Animations] Coordinate "update animations and send events" procedure across multiple timelines
Modified: trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp (260527 => 260528)
--- trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp 2020-04-22 19:14:59 UTC (rev 260527)
+++ trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp 2020-04-22 19:24:55 UTC (rev 260528)
@@ -549,11 +549,13 @@
firstRootBox->markDirty();
dirtiedLines = true;
}
+
for (auto* current = firstRootBox; current && current != lastRootBox; current = current->nextRootBox()) {
- if (current->lineBreakObj() == &renderer && current->lineBreakPos() > end)
+ auto lineBreakPos = current->lineBreakPos();
+ if (current->lineBreakObj() == &renderer && (lineBreakPos > end || (start != end && lineBreakPos == end)))
current->setLineBreakPos(current->lineBreakPos() + lengthDelta);
}
-
+
// If the text node is empty, dirty the line where new text will be inserted.
if (!m_first && renderer.parent()) {
renderer.parent()->dirtyLinesFromChangedChild(renderer);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes