[gtk+] Be more forgiving about child properties



commit e6a8848d0cb85e4030a72c638c86a10956761935
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Aug 3 08:51:40 2013 +0200

    Be more forgiving about child properties
    
    Packing properties in ui files are parsed and handled by
    the container, which assumes that the child is a direct
    descendant. For internal children, this is inconvenient,
    because we don't want to reconstruct the entire internal
    structure between the container and the child in the ui
    file.
    
    It would be best to not specify packing properties
    in that case, but since existing ui files do this for
    GtkInfoBar and we are about to change the internal
    structure of GtkInfoBar, be more forgiving here.

 gtk/gtkcontainer.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcontainer.c b/gtk/gtkcontainer.c
index b1be6fe..b118346 100644
--- a/gtk/gtkcontainer.c
+++ b/gtk/gtkcontainer.c
@@ -582,6 +582,14 @@ gtk_container_buildable_set_child_property (GtkContainer *container,
   GValue gvalue = G_VALUE_INIT;
   GError *error = NULL;
 
+  if (gtk_widget_get_parent (child) != (GtkWidget *)container)
+    {
+      /* This can happen with internal children of complex
+       * widgets. Silently ignore the child properties in this case.
+       */
+      return;
+    }
+
   pspec = gtk_container_class_find_child_property
     (G_OBJECT_GET_CLASS (container), name);
   if (!pspec)


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