зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1412110 - Make sure we build a wrap list for the caret frame, since it will have multiple display items. r=miko
--HG-- extra : rebase_source : b59ff089835023c96daa1e1bf1c7f5bde6c75f15
This commit is contained in:
Родитель
0cd1c74fe2
Коммит
fca4960b0f
|
@ -3644,7 +3644,9 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
|
|||
nsDisplayListBuilder::AutoContainerASRTracker contASRTracker(aBuilder);
|
||||
child->BuildDisplayListForStackingContext(aBuilder, &list, &canSkipWrapList);
|
||||
wrapListASR = contASRTracker.GetContainerASR();
|
||||
aBuilder->DisplayCaret(child, &list);
|
||||
if (aBuilder->DisplayCaret(child, &list)) {
|
||||
canSkipWrapList = false;
|
||||
}
|
||||
} else {
|
||||
Maybe<nsRect> clipPropClip =
|
||||
child->GetClipPropClipRect(disp, effects, child->GetSize());
|
||||
|
@ -3710,7 +3712,9 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
|
|||
aBuilder->AdjustWindowDraggingRegion(child);
|
||||
nsDisplayListBuilder::AutoContainerASRTracker contASRTracker(aBuilder);
|
||||
child->BuildDisplayList(aBuilder, pseudoStack);
|
||||
aBuilder->DisplayCaret(child, pseudoStack.Content());
|
||||
if (aBuilder->DisplayCaret(child, pseudoStack.Content())) {
|
||||
canSkipWrapList = false;
|
||||
}
|
||||
wrapListASR = contASRTracker.GetContainerASR();
|
||||
|
||||
list.AppendToTop(pseudoStack.BorderBackground());
|
||||
|
|
|
@ -720,11 +720,14 @@ public:
|
|||
/**
|
||||
* Display the caret if needed.
|
||||
*/
|
||||
void DisplayCaret(nsIFrame* aFrame, nsDisplayList* aList) {
|
||||
bool DisplayCaret(nsIFrame* aFrame, nsDisplayList* aList)
|
||||
{
|
||||
nsIFrame* frame = GetCaretFrame();
|
||||
if (aFrame == frame) {
|
||||
frame->DisplayCaret(this, aList);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Get the frame that the caret is supposed to draw in.
|
||||
|
|
Загрузка…
Ссылка в новой задаче