mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 13:57:32 +00:00
Improve our handling of reframes around {ib} splits when pseudos or XUL are involved.
Bug 322678, bug 325024, bug 325218. r=mats, sr=roc
This commit is contained in:
parent
0345a6719d
commit
f3a6acf9ec
@ -546,7 +546,11 @@ GetIBContainingBlockFor(nsIFrame* aFrame)
|
|||||||
return aFrame;
|
return aFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsFrameSpecial(parentFrame))
|
// Note that we ignore non-special frames which have a pseudo on their
|
||||||
|
// style context -- they're not the frames we're looking for! In
|
||||||
|
// particular, they may be hiding a real parent that _is_ special.
|
||||||
|
if (!IsFrameSpecial(parentFrame) &&
|
||||||
|
!parentFrame->GetStyleContext()->GetPseudoType())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
aFrame = parentFrame;
|
aFrame = parentFrame;
|
||||||
@ -9881,17 +9885,10 @@ DeletingFrameSubtree(nsPresContext* aPresContext,
|
|||||||
|
|
||||||
nsAutoVoidArray destroyQueue;
|
nsAutoVoidArray destroyQueue;
|
||||||
|
|
||||||
// If it's a "special" block-in-inline frame, then we need to
|
// If it's a "special" block-in-inline frame, then we can't really deal.
|
||||||
// remember to delete our special siblings, too. Since every one of
|
// That really shouldn't be happening.
|
||||||
// the next-in-flows has the same special sibling, just do this
|
NS_ASSERTION(!IsFrameSpecial(aFrame),
|
||||||
// once, rather than in the loop below.
|
"DeletingFrameSubtree on a special frame. Prepare to crash.");
|
||||||
if (IsFrameSpecial(aFrame)) {
|
|
||||||
nsIFrame* specialSibling;
|
|
||||||
GetSpecialSibling(aFrameManager, aFrame, &specialSibling);
|
|
||||||
if (specialSibling) {
|
|
||||||
DeletingFrameSubtree(aPresContext, aFrameManager, specialSibling);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
DoDeletingFrameSubtree(aPresContext, aFrameManager, destroyQueue,
|
DoDeletingFrameSubtree(aPresContext, aFrameManager, destroyQueue,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user