зеркало из https://github.com/mozilla/gecko-dev.git
Bug 868906 - Make GetChildFrameContainingOffset() stable. r=roc
This commit is contained in:
Родитель
92268718c4
Коммит
15eb2cc275
|
@ -797,6 +797,8 @@ nsDisplayListBuilder::EnterPresShell(nsIFrame* aReferenceFrame,
|
|||
|
||||
nsRefPtr<nsCaret> caret = state->mPresShell->GetCaret();
|
||||
state->mCaretFrame = caret->GetCaretFrame();
|
||||
NS_ASSERTION(state->mCaretFrame == caret->GetCaretFrame(),
|
||||
"GetCaretFrame() is unstable");
|
||||
|
||||
if (state->mCaretFrame) {
|
||||
// Check if the dirty rect intersects with the caret's dirty rect.
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<script>
|
||||
|
||||
function boom()
|
||||
{
|
||||
var root = document.documentElement;
|
||||
while(root.firstChild) { root.removeChild(root.firstChild); }
|
||||
root.appendChild(document.createElement("body"));
|
||||
root.offsetHeight;
|
||||
|
||||
var bigText = document.createTextNode("");
|
||||
bigText.data += "\u202D";
|
||||
bigText.data += "A";
|
||||
bigText.data += "\x1C";
|
||||
bigText.data += "\u062A";
|
||||
bigText.data += "E";
|
||||
bigText.data += "\u062E";
|
||||
bigText.data += " ";
|
||||
bigText.data += "\u202D";
|
||||
bigText.data += "X";
|
||||
bigText.data += "\x1C";
|
||||
bigText.data += "Y";
|
||||
root.appendChild(bigText);
|
||||
|
||||
var smallText = document.createTextNode("Z");
|
||||
root.appendChild(smallText);
|
||||
|
||||
root.focus();
|
||||
|
||||
function del()
|
||||
{
|
||||
var range = document.createRange();
|
||||
range.setStart(root, 0);
|
||||
range.setEnd(bigText, bigText.data.length);
|
||||
range.deleteContents();
|
||||
}
|
||||
|
||||
del();
|
||||
|
||||
function finish() {
|
||||
document.documentElement.removeAttribute('class');
|
||||
}
|
||||
|
||||
setTimeout(finish, 0);
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body onload="boom();"></body>
|
||||
</html>
|
|
@ -461,4 +461,5 @@ load 849603.html
|
|||
test-pref(layout.css.flexbox.enabled,true) load 851396-1.html
|
||||
test-pref(layout.css.flexbox.enabled,true) load 854263-1.html
|
||||
test-pref(layout.css.flexbox.enabled,true) load 862947-1.html
|
||||
needs-focus pref(accessibility.browsewithcaret,true) load 868906.html
|
||||
test-pref(layout.css.flexbox.enabled,true) load 866547-1.html
|
||||
|
|
|
@ -6345,6 +6345,9 @@ nsTextFrame::GetChildFrameContainingOffset(int32_t aContentOffset,
|
|||
if (aContentOffset == next->GetContentOffset()) {
|
||||
if (aHint) {
|
||||
f = next;
|
||||
if (f->GetContentLength() == 0) {
|
||||
continue; // use the last of the empty frames with this offset
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -6358,6 +6361,9 @@ nsTextFrame::GetChildFrameContainingOffset(int32_t aContentOffset,
|
|||
if (aContentOffset == f->GetContentOffset()) {
|
||||
if (!aHint) {
|
||||
f = prev;
|
||||
if (f->GetContentLength() == 0) {
|
||||
continue; // use the first of the empty frames with this offset
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче