зеркало из https://github.com/mozilla/gecko-dev.git
Bug 334690. Fix regression in z-ordering of table cell content for event handling. r=bernd
This commit is contained in:
Родитель
9f5eaede3a
Коммит
dd16b28d00
|
@ -1405,19 +1405,18 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder,
|
|||
PRBool aIsRoot)
|
||||
{
|
||||
nsDisplayList eventsBorderBackground;
|
||||
// If we need to sort the event backgrounds, then we'll put descendant
|
||||
// border-backgrounds into their own list so we don't accidentally sort
|
||||
// some ancestor's border-background.
|
||||
// If we need to sort the event backgrounds, then we'll put descendants'
|
||||
// display items into their own set of lists.
|
||||
PRBool sortEventBackgrounds = aIsRoot && aBuilder->IsForEventDelivery();
|
||||
nsDisplayListSet lists(aLists,
|
||||
sortEventBackgrounds ? &eventsBorderBackground : aLists.BorderBackground());
|
||||
nsDisplayListCollection separatedCollection;
|
||||
const nsDisplayListSet* lists = sortEventBackgrounds ? &separatedCollection : &aLists;
|
||||
|
||||
// Create dedicated background display items per-frame when we're
|
||||
// handling events.
|
||||
// XXX how to handle collapsed borders?
|
||||
if (aBuilder->IsForEventDelivery() &&
|
||||
aFrame->IsVisibleForPainting(aBuilder)) {
|
||||
nsresult rv = lists.BorderBackground()->AppendNewToTop(new (aBuilder)
|
||||
nsresult rv = lists->BorderBackground()->AppendNewToTop(new (aBuilder)
|
||||
nsDisplayBackground(aFrame));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
@ -1432,7 +1431,7 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder,
|
|||
// lets us get cell borders into the nsTableFrame's BorderBackground list.
|
||||
nsIFrame* kid = aFrame->GetFirstChild(nsnull);
|
||||
while (kid) {
|
||||
nsresult rv = aFrame->BuildDisplayListForChild(aBuilder, kid, aDirtyRect, lists);
|
||||
nsresult rv = aFrame->BuildDisplayListForChild(aBuilder, kid, aDirtyRect, *lists);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
kid = kid->GetNextSibling();
|
||||
}
|
||||
|
@ -1441,11 +1440,11 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder,
|
|||
// Ensure that the table frame event background goes before the
|
||||
// table rowgroups event backgrounds, before the table row event backgrounds,
|
||||
// before everything else (cells and their blocks)
|
||||
eventsBorderBackground.Sort(aBuilder, CompareByTablePartRank, nsnull);
|
||||
aLists.BorderBackground()->AppendToTop(&eventsBorderBackground);
|
||||
separatedCollection.BorderBackground()->Sort(CompareByTablePartRank, nsnull);
|
||||
separatedCollection.MoveTo(aLists);
|
||||
}
|
||||
|
||||
return aFrame->DisplayOutline(aBuilder, lists);
|
||||
return aFrame->DisplayOutline(aBuilder, aLists);
|
||||
}
|
||||
|
||||
// table paint code is concerned primarily with borders and bg color
|
||||
|
|
Загрузка…
Ссылка в новой задаче