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: v0.9.5-beta~230 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=6b96a03d1ac087cbd8c0d7c69699770adf143245;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)]