builder: Make gtk_builder_extend_with_template() work with objects

This will be relevant later when we introduce GtkListItem which is not a
GtkWidget.
This commit is contained in:
Benjamin Otte
2019-11-01 07:30:32 +01:00
parent b4a6262b70
commit 567548c11d
4 changed files with 11 additions and 11 deletions

View File

@@ -1247,7 +1247,7 @@ gtk_builder_add_objects_from_file (GtkBuilder *builder,
/** /**
* gtk_builder_extend_with_template: * gtk_builder_extend_with_template:
* @builder: a #GtkBuilder * @builder: a #GtkBuilder
* @widget: the widget that is being extended * @object: the object that is being extended
* @template_type: the type that the template is for * @template_type: the type that the template is for
* @buffer: the string to parse * @buffer: the string to parse
* @length: the length of @buffer (may be -1 if @buffer is nul-terminated) * @length: the length of @buffer (may be -1 if @buffer is nul-terminated)
@@ -1263,7 +1263,7 @@ gtk_builder_add_objects_from_file (GtkBuilder *builder,
*/ */
gboolean gboolean
gtk_builder_extend_with_template (GtkBuilder *builder, gtk_builder_extend_with_template (GtkBuilder *builder,
GtkWidget *widget, GObject *object,
GType template_type, GType template_type,
const gchar *buffer, const gchar *buffer,
gssize length, gssize length,
@@ -1273,9 +1273,9 @@ gtk_builder_extend_with_template (GtkBuilder *builder,
GError *tmp_error; GError *tmp_error;
g_return_val_if_fail (GTK_IS_BUILDER (builder), 0); g_return_val_if_fail (GTK_IS_BUILDER (builder), 0);
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0); g_return_val_if_fail (G_IS_OBJECT (object), 0);
g_return_val_if_fail (g_type_name (template_type) != NULL, 0); g_return_val_if_fail (g_type_name (template_type) != NULL, 0);
g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (widget), template_type), 0); g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (object), template_type), 0);
g_return_val_if_fail (buffer && buffer[0], 0); g_return_val_if_fail (buffer && buffer[0], 0);
tmp_error = NULL; tmp_error = NULL;
@@ -1286,7 +1286,7 @@ gtk_builder_extend_with_template (GtkBuilder *builder,
priv->resource_prefix = NULL; priv->resource_prefix = NULL;
priv->template_type = template_type; priv->template_type = template_type;
gtk_builder_expose_object (builder, g_type_name (template_type), G_OBJECT (widget)); gtk_builder_expose_object (builder, g_type_name (template_type), object);
_gtk_builder_parser_parse_buffer (builder, "<input>", _gtk_builder_parser_parse_buffer (builder, "<input>",
buffer, length, buffer, length,
NULL, NULL,

View File

@@ -197,7 +197,7 @@ GClosure * gtk_builder_create_closure (GtkBuilder *builder,
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL
gboolean gtk_builder_extend_with_template (GtkBuilder *builder, gboolean gtk_builder_extend_with_template (GtkBuilder *builder,
GtkWidget *widget, GObject *object,
GType template_type, GType template_type,
const gchar *buffer, const gchar *buffer,
gssize length, gssize length,

View File

@@ -12135,7 +12135,7 @@ gtk_widget_init_template (GtkWidget *widget)
* will validate that the template is created for the correct GType and assert that * will validate that the template is created for the correct GType and assert that
* there is no infinite recursion. * there is no infinite recursion.
*/ */
if (!gtk_builder_extend_with_template (builder, widget, class_type, if (!gtk_builder_extend_with_template (builder, G_OBJECT (widget), class_type,
(const gchar *)g_bytes_get_data (template->data, NULL), (const gchar *)g_bytes_get_data (template->data, NULL),
g_bytes_get_size (template->data), g_bytes_get_size (template->data),
&error)) &error))

View File

@@ -57,7 +57,7 @@ do_validate_template (const gchar *filename,
const gchar *parent_name) const gchar *parent_name)
{ {
GType template_type; GType template_type;
GtkWidget *widget; GObject *object;
GtkBuilder *builder; GtkBuilder *builder;
GError *error = NULL; GError *error = NULL;
gint ret; gint ret;
@@ -69,15 +69,15 @@ do_validate_template (const gchar *filename,
if (template_type == G_TYPE_INVALID) if (template_type == G_TYPE_INVALID)
template_type = make_fake_type (type_name, parent_name); template_type = make_fake_type (type_name, parent_name);
widget = g_object_new (template_type, NULL); object = g_object_new (template_type, NULL);
if (!widget) if (!object)
{ {
g_printerr ("Failed to create an instance of the template type %s\n", type_name); g_printerr ("Failed to create an instance of the template type %s\n", type_name);
exit (1); exit (1);
} }
builder = gtk_builder_new (); builder = gtk_builder_new ();
ret = gtk_builder_extend_with_template (builder, widget, template_type, " ", 1, &error); ret = gtk_builder_extend_with_template (builder, object , template_type, " ", 1, &error);
if (ret) if (ret)
ret = gtk_builder_add_from_file (builder, filename, &error); ret = gtk_builder_add_from_file (builder, filename, &error);
g_object_unref (builder); g_object_unref (builder);