Merge branch 'ebassi/childless-stack-page' into 'main'
stack: Assert that StackPage:child is set See merge request GNOME/gtk!4201
This commit is contained in:
@@ -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)
|
||||
@@ -1543,13 +1558,11 @@ gtk_stack_add_internal (GtkStack *stack,
|
||||
|
||||
g_return_val_if_fail (child != NULL, NULL);
|
||||
|
||||
child_info = g_object_new (GTK_TYPE_STACK_PAGE, NULL);
|
||||
child_info->widget = g_object_ref (child);
|
||||
child_info->name = g_strdup (name);
|
||||
child_info->title = g_strdup (title);
|
||||
child_info->icon_name = NULL;
|
||||
child_info->needs_attention = FALSE;
|
||||
child_info->last_focus = NULL;
|
||||
child_info = g_object_new (GTK_TYPE_STACK_PAGE,
|
||||
"child", child,
|
||||
"name", name,
|
||||
"title", title,
|
||||
NULL);
|
||||
|
||||
gtk_stack_add_page (stack, child_info);
|
||||
|
||||
@@ -2627,7 +2640,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
|
||||
|
||||
@@ -78,6 +78,7 @@ test_type (gconstpointer data)
|
||||
if (g_type_is_a (type, GTK_TYPE_APPLICATION) ||
|
||||
g_type_is_a (type, GDK_TYPE_PIXBUF_LOADER) ||
|
||||
g_type_is_a (type, GTK_TYPE_LAYOUT_CHILD) ||
|
||||
g_type_is_a (type, GTK_TYPE_STACK_PAGE) ||
|
||||
#ifdef G_OS_UNIX
|
||||
g_type_is_a (type, GTK_TYPE_PRINT_JOB) ||
|
||||
#endif
|
||||
|
||||
@@ -409,6 +409,9 @@ test_type (gconstpointer data)
|
||||
if (g_str_equal (g_type_name (type), "GtkPlacesSidebar"))
|
||||
return;
|
||||
|
||||
if (g_type_is_a (type, GTK_TYPE_STACK_PAGE))
|
||||
return;
|
||||
|
||||
/* These rely on a d-bus session bus */
|
||||
if (g_type_is_a (type, GTK_TYPE_MOUNT_OPERATION))
|
||||
return;
|
||||
|
||||
@@ -178,7 +178,9 @@ main (int argc, char **argv)
|
||||
all_types[i] != GDK_TYPE_PIXBUF_LOADER &&
|
||||
all_types[i] != gdk_pixbuf_simple_anim_iter_get_type() &&
|
||||
!g_type_is_a (all_types[i], GTK_TYPE_SHORTCUT_TRIGGER) &&
|
||||
!g_type_is_a (all_types[i], GTK_TYPE_SHORTCUT_ACTION))
|
||||
!g_type_is_a (all_types[i], GTK_TYPE_SHORTCUT_ACTION) &&
|
||||
/* can't instantiate empty stack pages */
|
||||
all_types[i] != GTK_TYPE_STACK_PAGE)
|
||||
{
|
||||
char *test_path = g_strdup_printf ("/FinalizeObject/%s", g_type_name (all_types[i]));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user