зеркало из https://github.com/mozilla/pjs.git
Try all continuations of the block when looking for a letter frame. b=408493 r+sr=bzbarsky a=blocking1.9
This commit is contained in:
Родитель
d7208d663a
Коммит
b83f398c79
|
@ -12299,13 +12299,20 @@ nsCSSFrameConstructor::RemoveLetterFrames(nsPresContext* aPresContext,
|
|||
aBlockFrame = aBlockFrame->GetFirstContinuation();
|
||||
|
||||
PRBool stopLooking = PR_FALSE;
|
||||
nsresult rv = RemoveFloatingFirstLetterFrames(aPresContext, aPresShell,
|
||||
nsresult rv;
|
||||
do {
|
||||
rv = RemoveFloatingFirstLetterFrames(aPresContext, aPresShell,
|
||||
aFrameManager,
|
||||
aBlockFrame, &stopLooking);
|
||||
if (NS_SUCCEEDED(rv) && !stopLooking) {
|
||||
rv = RemoveFirstLetterFrames(aPresContext, aPresShell, aFrameManager,
|
||||
aBlockFrame, &stopLooking);
|
||||
}
|
||||
if (stopLooking) {
|
||||
break;
|
||||
}
|
||||
aBlockFrame = aBlockFrame->GetNextContinuation();
|
||||
} while (aBlockFrame);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -12316,22 +12323,28 @@ nsCSSFrameConstructor::RecoverLetterFrames(nsFrameConstructorState& aState,
|
|||
{
|
||||
aBlockFrame = aBlockFrame->GetFirstContinuation();
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
aBlockFrame->AddStateBits(NS_BLOCK_HAS_FIRST_LETTER_STYLE);
|
||||
|
||||
nsIFrame* blockKids = aBlockFrame->GetFirstChild(nsnull);
|
||||
nsIFrame* parentFrame = nsnull;
|
||||
nsIFrame* textFrame = nsnull;
|
||||
nsIFrame* prevFrame = nsnull;
|
||||
nsFrameItems letterFrames;
|
||||
PRBool stopLooking = PR_FALSE;
|
||||
rv = WrapFramesInFirstLetterFrame(aState, aBlockFrame, aBlockFrame, blockKids,
|
||||
nsresult rv;
|
||||
do {
|
||||
// XXX shouldn't this bit be set already (bug 408493), assert instead?
|
||||
aBlockFrame->AddStateBits(NS_BLOCK_HAS_FIRST_LETTER_STYLE);
|
||||
rv = WrapFramesInFirstLetterFrame(aState, aBlockFrame, aBlockFrame,
|
||||
aBlockFrame->GetFirstChild(nsnull),
|
||||
&parentFrame, &textFrame, &prevFrame,
|
||||
letterFrames, &stopLooking);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
if (stopLooking) {
|
||||
break;
|
||||
}
|
||||
aBlockFrame = aBlockFrame->GetNextContinuation();
|
||||
} while (aBlockFrame);
|
||||
|
||||
if (parentFrame) {
|
||||
// Take the old textFrame out of the parents child list
|
||||
::DeletingFrameSubtree(aState.mFrameManager, textFrame);
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<style type="text/css">
|
||||
|
||||
body { -moz-column-count: 2; }
|
||||
span { white-space: pre; }
|
||||
body:first-letter { }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body onload="document.body.removeChild(document.body.lastChild);"><span>
|
||||
</span>b</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,14 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<style type="text/css">
|
||||
|
||||
body { -moz-column-count: 2; }
|
||||
body:first-letter { color:blue; font-size:400%; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>T</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,16 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<style type="text/css">
|
||||
|
||||
body { -moz-column-count: 2; }
|
||||
span { white-space: pre; }
|
||||
body:first-letter { color:blue; font-size:400%; }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body onload="var span=document.getElementById('span'); span.removeChild(span.lastChild);"><span id="span">T
|
||||
</span>T</body>
|
||||
|
||||
</html>
|
|
@ -626,6 +626,8 @@ random == 403134-1.html 403134-1-ref.html # bug 405377
|
|||
== 407111-1.html 407111-1-ref.html
|
||||
== 407227-1.html 407227-1-ref.html
|
||||
== 407937-1.html 407937-1-ref.html
|
||||
== 408493-1.html about:blank
|
||||
== 408493-2.html 408493-2-ref.html
|
||||
== 408656-1a.html 408656-1-ref.html
|
||||
== 408656-1b.html 408656-1-ref.html
|
||||
== 408656-1c.html 408656-1-ref.html
|
||||
|
|
Загрузка…
Ссылка в новой задаче