From: jpbruyere Date: Fri, 3 Mar 2017 13:21:10 +0000 (+0100) Subject: discard RegisterClip in higher levels if parent is dirty and parent cache is enabled X-Git-Tag: 0.6.0~52 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=20ce11875dc27c7399e3f5bf2a060e2c7cbeaad7;p=jp%2Fcrow.git discard RegisterClip in higher levels if parent is dirty and parent cache is enabled --- diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index ff4b3124..2afbe336 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -856,8 +856,12 @@ namespace Crow public virtual void RegisterClip(Rectangle clip){ if (CacheEnabled && !IsDirty) Clipping.AddRectangle (clip + ClientRectangle.Position); - if (Parent != null) - Parent.RegisterClip (clip + Slot.Position + ClientRectangle.Position); + if (Parent == null) + return; + GraphicObject p = Parent as GraphicObject; + if (p?.IsDirty == true && p?.CacheEnabled == true) + return; + Parent.RegisterClip (clip + Slot.Position + ClientRectangle.Position); } /// Full update, taking care of sizing policy [MethodImpl(MethodImplOptions.AggressiveInlining)]