From bbb56b1f1f862c71f739ed411c1c56429b5e77fe Mon Sep 17 00:00:00 2001 From: Bas Schouten Date: Fri, 24 Sep 2010 18:57:52 +0200 Subject: [PATCH] Bug 587508: Workaround: Invalidate parts of the plugin area that might have content drawn to them. r=roc a=blocking-beta7 --- widget/src/windows/nsWindow.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/widget/src/windows/nsWindow.cpp b/widget/src/windows/nsWindow.cpp index ea7d8ecd404..32e21a3713f 100644 --- a/widget/src/windows/nsWindow.cpp +++ b/widget/src/windows/nsWindow.cpp @@ -6874,6 +6874,20 @@ nsWindow::ConfigureChildren(const nsTArray& aConfigurations) PR_TRUE); } else if (bounds.TopLeft() != configuration.mBounds.TopLeft()) { w->Move(configuration.mBounds.x, configuration.mBounds.y); + + + if (gfxWindowsPlatform::GetPlatform()->GetRenderMode() == + gfxWindowsPlatform::RENDER_DIRECT2D || + GetLayerManager()->GetBackendType() != LayerManager::LAYERS_BASIC) { + // XXX - Workaround for Bug 587508. This will invalidate the part of the + // plugin window that might be touched by moving content somehow. The + // underlying problem should be found and fixed! + nsIntRegion r; + r.Sub(bounds, configuration.mBounds); + r.MoveBy(-bounds.x, + -bounds.y); + w->Invalidate(r.GetBounds(), PR_FALSE); + } } rv = w->SetWindowClipRegion(configuration.mClipRegion, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv);