зеркало из 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);
|
nsDisplayListBuilder::AutoContainerASRTracker contASRTracker(aBuilder);
|
||||||
child->BuildDisplayListForStackingContext(aBuilder, &list, &canSkipWrapList);
|
child->BuildDisplayListForStackingContext(aBuilder, &list, &canSkipWrapList);
|
||||||
wrapListASR = contASRTracker.GetContainerASR();
|
wrapListASR = contASRTracker.GetContainerASR();
|
||||||
aBuilder->DisplayCaret(child, &list);
|
if (aBuilder->DisplayCaret(child, &list)) {
|
||||||
|
canSkipWrapList = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Maybe<nsRect> clipPropClip =
|
Maybe<nsRect> clipPropClip =
|
||||||
child->GetClipPropClipRect(disp, effects, child->GetSize());
|
child->GetClipPropClipRect(disp, effects, child->GetSize());
|
||||||
|
@ -3710,7 +3712,9 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder,
|
||||||
aBuilder->AdjustWindowDraggingRegion(child);
|
aBuilder->AdjustWindowDraggingRegion(child);
|
||||||
nsDisplayListBuilder::AutoContainerASRTracker contASRTracker(aBuilder);
|
nsDisplayListBuilder::AutoContainerASRTracker contASRTracker(aBuilder);
|
||||||
child->BuildDisplayList(aBuilder, pseudoStack);
|
child->BuildDisplayList(aBuilder, pseudoStack);
|
||||||
aBuilder->DisplayCaret(child, pseudoStack.Content());
|
if (aBuilder->DisplayCaret(child, pseudoStack.Content())) {
|
||||||
|
canSkipWrapList = false;
|
||||||
|
}
|
||||||
wrapListASR = contASRTracker.GetContainerASR();
|
wrapListASR = contASRTracker.GetContainerASR();
|
||||||
|
|
||||||
list.AppendToTop(pseudoStack.BorderBackground());
|
list.AppendToTop(pseudoStack.BorderBackground());
|
||||||
|
|
|
@ -720,11 +720,14 @@ public:
|
||||||
/**
|
/**
|
||||||
* Display the caret if needed.
|
* Display the caret if needed.
|
||||||
*/
|
*/
|
||||||
void DisplayCaret(nsIFrame* aFrame, nsDisplayList* aList) {
|
bool DisplayCaret(nsIFrame* aFrame, nsDisplayList* aList)
|
||||||
|
{
|
||||||
nsIFrame* frame = GetCaretFrame();
|
nsIFrame* frame = GetCaretFrame();
|
||||||
if (aFrame == frame) {
|
if (aFrame == frame) {
|
||||||
frame->DisplayCaret(this, aList);
|
frame->DisplayCaret(this, aList);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get the frame that the caret is supposed to draw in.
|
* Get the frame that the caret is supposed to draw in.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче