stack: Assert that StackPage:child is set
authorEmmanuele Bassi <ebassi@gnome.org>
Mon, 29 Nov 2021 16:57:21 +0000 (16:57 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Wed, 13 Jul 2022 14:03:05 +0000 (15:03 +0100)
Childless GtkStackPage instances are not allowed, otherwise everything
falls apart in random places.

gtk/gtkstack.c

index 1df1ec244a7376412513434a84ae0547255639ea..7c8d9afd75dc46a1283cdb496fed926d9debfd6c 100644 (file)
@@ -395,6 +395,20 @@ gtk_stack_page_set_property (GObject      *object,
       break;
     }
 }
+
+static void
+gtk_stack_page_constructed (GObject *gobject)
+{
+  GtkStackPage *self = GTK_STACK_PAGE (gobject);
+
+  if (G_UNLIKELY (self->widget == NULL))
+    g_error ("GtkStackPage '%s' [%p] is missing a child widget",
+             self->name != NULL ? self->name : "<unnamed>",
+             self);
+
+  G_OBJECT_CLASS (gtk_stack_page_parent_class)->constructed (gobject);
+}
+
 static void
 gtk_stack_page_class_init (GtkStackPageClass *class)
 {
@@ -404,6 +418,7 @@ gtk_stack_page_class_init (GtkStackPageClass *class)
   object_class->dispose = gtk_stack_page_dispose;
   object_class->get_property = gtk_stack_page_get_property;
   object_class->set_property = gtk_stack_page_set_property;
+  object_class->constructed = gtk_stack_page_constructed;
 
   /**
    * GtkStackPage:child: (attributes org.gtk.Property.get=gtk_stack_page_get_child)
@@ -2627,7 +2642,7 @@ gtk_stack_measure (GtkWidget      *widget,
               int min_for_size;
 
               gtk_widget_measure (child, OPPOSITE_ORIENTATION (orientation), -1, &min_for_size, NULL, NULL, NULL);
-              
+
               gtk_widget_measure (child, orientation, MAX (min_for_size, for_size), &child_min, &child_nat, NULL, NULL);
             }
           else