Bug 1812170 - Make `HTMLEditor::ClearStyleAt` should return `pointToPutCaret` if next node of first split is not split r=m_kato
The new path added in
bug 1807829 hits the odd result case of `ClearStyleAt`.
`pointToPutCaret` may be updated if the preceding split occurs. Therefore,
it should be returned if it does not split next nodes after the first split
instead of returning unset point (because of not splitting the point,
`unwrappedSplitNodeResult.AtSplitPoint` may return unset point, therefore,
it may return unset point in the case).
Additionally, I forgot to split delete `SplitNodeResult::mCaretPoint` in
bug 1792654, and it causes `SplitNodeDeepWithTransaction` returns unset caret
point. This patch fixes this bug too.
Differential Revision:
https://phabricator.services.mozilla.com/D168179
<!DOCTYPE HTML>
<html><head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
html,body {
font-size:12px;
font-family:monospace;
}
.grid {
display: grid;
border: 1px solid green;
grid-template-columns: 20px 20px 20px 20px;
grid-template-rows: 20px 20px 20px;
grid-auto-flow: row;
grid-auto-columns: 20px;
grid-auto-rows: 20px;
}
span {
background: lime;
border: 1px solid;
}
.test1 { grid-template-areas:'. a a-start .'; }
.test1 span { grid-column: a-start / 8; }
.test2 {
grid-template-areas:
'a a a . . .'
'a a a . . .'
'. b b . . .'
;
}
.test2 .a {
grid-area: a;
}
.test2 .b {
grid-column: 2 / span 3;
grid-row: b;
}
.test2 .c {
grid-column: auto / span 3;
}
.test3 {
grid-template-areas:'. a .';
grid-template-columns: [a-start] 20px 20px [a-start-start] 20px [a-start-end];
}
.test3 span { grid-column: a-start / 8; }
.test4, .test5 {
grid-template-areas:'. . . a';
grid-template-columns: 20px [a-start] 20px [a-start] 20px [a-end] 20px ;
}
.test4 span { grid-column: a-start 2 / 8; }
.test5 span { grid-column: a / 8; }
.test6 #span1 { grid-row:1/2; grid-column:1/2; }
.test6 #span2 { grid-row:1/2; grid-column:1/2; }
.test7 {grid-template-columns: 700px; grid-template-rows: 60px; }
.test7 #span1 { grid-area: 1/1; background: red; border: 4px solid red; color:red; }
.test7 #span2 { grid-area: 1/1; background: lime; padding: 3px; margin:0; }
</style>
</head>
<body>
<div class="grid test1"><span>a</span></div>
<div class="grid test2">
<span class="a">a</span>
<span class="b">b</span>
<span class="c">c</span>
</div>
<div class="grid test3"><span>a</span></div>
<div class="grid test4"><span>a</span></div>
<div class="grid test5"><span>a</span></div>
<div class="grid test6"><span id="span1">a</span><span id="span2">b</span></div>
<div class="grid test7"><span id="span1">FAIL</span><span id="span2"> grid</span></div>
</body>
</html>