Bug 408955. UpdateViewAfterScroll shouldn't just bail out for content in popups. Instead we should do the invalidation but limit it to the correct displayRoot. r+sr=bzbarsky
This commit is contained in:
Родитель
8113785109
Коммит
c910357af6
|
@ -742,24 +742,18 @@ nsViewManager::UpdateViewAfterScroll(nsView *aView, const nsRegion& aUpdateRegio
|
|||
--RootViewManager()->mScrollCnt;
|
||||
return;
|
||||
}
|
||||
nsPoint offset = ComputeViewOffset(aView);
|
||||
|
||||
nsView* displayRoot = GetDisplayRootFor(aView);
|
||||
nsPoint offset = aView->GetOffsetTo(displayRoot);
|
||||
damageRect.MoveBy(offset);
|
||||
|
||||
// if this is a floating view, it isn't covered by any widgets other than
|
||||
// its children, which are handled by the widget scroller.
|
||||
if (aView->GetFloating()) {
|
||||
// Don't forget to undo mScrollCnt!
|
||||
--RootViewManager()->mScrollCnt;
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateWidgetArea(RootViewManager()->GetRootView(), nsRegion(damageRect), aView);
|
||||
UpdateWidgetArea(displayRoot, nsRegion(damageRect), aView);
|
||||
if (!aUpdateRegion.IsEmpty()) {
|
||||
// XXX We should update the region, not the bounds rect, but that requires
|
||||
// a little more work. Fix this when we reshuffle this code.
|
||||
nsRegion update(aUpdateRegion);
|
||||
update.MoveBy(offset);
|
||||
UpdateWidgetArea(RootViewManager()->GetRootView(), update, nsnull);
|
||||
UpdateWidgetArea(displayRoot, update, nsnull);
|
||||
// FlushPendingInvalidates();
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче