Ensure that continuation frames after the end of a directional run are non-fluid. Bug 490559, r+sr=roc

This commit is contained in:
Simon Montagu 2009-10-07 21:53:50 -07:00
Родитель 0e7456c02a
Коммит 66f3028c95
3 изменённых файлов: 27 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,16 @@
<html>
<head>
<script type="text/javascript">
function ddoe() {
var x=document.getElementById('a');
x.parentNode.removeChild(x);
}
</script>
</head>
<body onload="ddoe()">
<div style="width: 1px;">
<span id="a">&#68997;</span>
&#68997;
</div>
</body>
</html>

Просмотреть файл

@ -246,6 +246,7 @@ load 483604-1.xhtml
load 488390-1.xhtml
load 489691.html
load 490376-1.xhtml
load 490559-1.html
load 490747.html
load 492014.xhtml
load 492112-1.xhtml

Просмотреть файл

@ -514,6 +514,16 @@ nsBidiPresUtils::Resolve(nsBlockFrame* aBlockFrame,
do {
} while (mLogicalFrames[++newIndex]->GetType() == nsGkAtoms::directionalFrame);
RemoveBidiContinuation(frame, frameIndex, newIndex, lineOffset);
} else if (runLength == fragmentLength) {
/*
* The directional run ends at the end of the frame. Make sure that
* the next frame is a non-fluid continuation
*/
nsIFrame* next = frame->GetNextInFlow();
if (next) {
frame->SetNextContinuation(next);
next->SetPrevContinuation(frame);
}
}
frame->AdjustOffsetsForBidi(contentOffset, contentOffset + fragmentLength);
if (lineNeedsUpdate) {