]> O.S.I.I.S - jp/crow.git/commitdiff
discard RegisterClip in higher levels if parent is dirty and parent cache is enabled
authorjpbruyere <jp.bruyere@hotmail.com>
Fri, 3 Mar 2017 13:21:10 +0000 (14:21 +0100)
committerjpbruyere <jp.bruyere@hotmail.com>
Fri, 3 Mar 2017 13:21:10 +0000 (14:21 +0100)
src/GraphicObjects/GraphicObject.cs

index ff4b31248fab749c80d0c325ccb487a132bc160f..2afbe336f8626cb2c32314408754d810894a37bf 100644 (file)
@@ -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);
                }
                /// <summary> Full update, taking care of sizing policy </summary>
                [MethodImpl(MethodImplOptions.AggressiveInlining)]