* bugfix in ScrollBy (it could scroll the screen area of hidden views)

* test the actually visible view area against dirty region,
  (this avoids making the client window call the Draw() function of views,
  even though all the drawing would get clipped on the server side)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20756 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2007-04-19 19:36:36 +00:00
parent 375dc591e6
commit 8d184de1da
+8 -2
View File
@@ -965,6 +965,12 @@ ViewLayer::ParentResized(int32 x, int32 y, BRegion* dirtyRegion)
void
ViewLayer::ScrollBy(int32 x, int32 y, BRegion* dirtyRegion)
{
if (!fVisible || !fWindow) {
fScrollingOffset.x += x;
fScrollingOffset.y += y;
return;
}
// blitting version, invalidates
// old contents
@@ -1412,13 +1418,13 @@ ViewLayer::AddTokensForLayersInRegion(BPrivate::PortLink& link,
if (!fVisible)
return;
// if (region.Intersects(ScreenClipping(windowContentClipping).Frame()))
IntRect screenBounds(Bounds());
ConvertToScreen(&screenBounds);
if (!region.Intersects((clipping_rect)screenBounds))
return;
link.Attach<int32>(fToken);
if (region.Intersects(ScreenClipping(windowContentClipping).Frame()))
link.Attach<int32>(fToken);
for (ViewLayer* child = FirstChild(); child; child = child->NextSibling())
child->AddTokensForLayersInRegion(link, region,