From 20ce11875dc27c7399e3f5bf2a060e2c7cbeaad7 Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Fri, 3 Mar 2017 14:21:10 +0100 Subject: [PATCH] discard RegisterClip in higher levels if parent is dirty and parent cache is enabled --- src/GraphicObjects/GraphicObject.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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)] -- 2.47.3