[gtk+] container: Don't create too-large clips



commit da31eb4f64eb9218126277851a16f38134fe1f7f
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jan 20 13:42:45 2016 -0500

    container: Don't create too-large clips
    
    gdk_rectangle_union will happily add all the worlds pixels
    to the union if the initial rectangle is initialized to all
    zeros. Therefore, explicitly check for an empty rectangle
    before calling it.

 gtk/gtkcontainer.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index 86501d7..090b4d7 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -3686,8 +3686,9 @@ gtk_container_should_propagate_draw (GtkContainer   *container,
 
 static void
 union_with_clip (GtkWidget *widget,
-                 gpointer   clip)
+                 gpointer   data)
 {
+  GdkRectangle *clip = data;
   GtkAllocation widget_clip;
 
   if (!gtk_widget_is_visible (widget) ||
@@ -3696,7 +3697,10 @@ union_with_clip (GtkWidget *widget,
 
   gtk_widget_get_clip (widget, &widget_clip);
 
-  gdk_rectangle_union (&widget_clip, clip, clip);
+  if (clip->width == 0 || clip->height == 0)
+    *clip = widget_clip;
+  else
+    gdk_rectangle_union (&widget_clip, clip, clip);
 }
 
 void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]