Bug 579663. Part 4. If the viewport frame has a container layer then we need to invalidate it too. r=roc

This commit is contained in:
Timothy Nikkel 2010-08-08 13:49:06 -05:00
Родитель 40c959bbeb
Коммит 6e958ad35e
1 изменённых файлов: 10 добавлений и 0 удалений

Просмотреть файл

@ -46,6 +46,9 @@
#include "nsGkAtoms.h"
#include "nsIScrollableFrame.h"
#include "nsDisplayList.h"
#include "FrameLayerBuilder.h"
using namespace mozilla;
nsIFrame*
NS_NewViewportFrame(nsIPresShell* aPresShell, nsStyleContext* aContext)
@ -360,6 +363,13 @@ ViewportFrame::InvalidateInternal(const nsRect& aDamageRect,
nsRect r = aDamageRect + nsPoint(aX, aY);
PresContext()->NotifyInvalidation(r, aFlags);
if ((mState & NS_FRAME_HAS_CONTAINER_LAYER) &&
!(aFlags & INVALIDATE_NO_THEBES_LAYERS)) {
FrameLayerBuilder::InvalidateThebesLayerContents(this, r);
// Don't need to invalidate any more Thebes layers
aFlags |= INVALIDATE_NO_THEBES_LAYERS;
}
nsIFrame* parent = nsLayoutUtils::GetCrossDocParentFrame(this);
if (parent) {
nsPoint pt = -parent->GetOffsetToCrossDoc(this);