* Appearantly, we are calling ScreenClipping() on some views who's parent
views don't have a valid screen clipping yet. If then later we want to invalidate the clipping of an entire hierarchie, the traversal stops before reaching some of the child views, because the assumption was that for any views with invalid screen clipping, their child views have invalid screen clipping as well. Though this might cost a little performance, we always invalidate the screen clipping of all child views, ignoring the flag of the current view. Fixes ticket #1198 (garbled screen clipping of E-Mail prefs and WonderBrush tool area when switching tabs). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23688 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
b4f58d8758
commit
9d4fa2c12b
@ -1596,8 +1596,21 @@ ViewLayer::ScreenClipping(BRegion* windowContentClipping, bool force) const
|
||||
void
|
||||
ViewLayer::InvalidateScreenClipping()
|
||||
{
|
||||
if (!fScreenClippingValid)
|
||||
return;
|
||||
// TODO: appearantly, we are calling ScreenClipping() on
|
||||
// views who's parents don't have a valid screen clipping yet,
|
||||
// this messes up the logic that for any given view with
|
||||
// fScreenClippingValid == false, all children have
|
||||
// fScreenClippingValid == false too. If this could be made the
|
||||
// case, we could save some performance here with the commented
|
||||
// out check, since InvalidateScreenClipping() might be called
|
||||
// frequently.
|
||||
// TODO: investigate, if InvalidateScreenClipping() could be
|
||||
// called in "deep" and "non-deep" mode, ie. see if there are
|
||||
// any cases where the children would still have valid screen
|
||||
// clipping, even though the parent's screen clipping becomes
|
||||
// invalid.
|
||||
// if (!fScreenClippingValid)
|
||||
// return;
|
||||
|
||||
fScreenClippingValid = false;
|
||||
// invalidate the childrens screen clipping as well
|
||||
|
Loading…
Reference in New Issue
Block a user