[gtk/wip/matthiasc/listview-2: 100/179] builder: Autofill scope property of listitemfactory
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/listview-2: 100/179] builder: Autofill scope property of listitemfactory
- Date: Sat, 30 May 2020 00:38:24 +0000 (UTC)
commit 53b6c7ee7bfd3a0cd03e49718a5b3c3580251595
Author: Benjamin Otte <otte redhat com>
Date: Tue Dec 3 07:37:24 2019 +0100
builder: Autofill scope property of listitemfactory
I couldn't come up with a better way to automatically inherit the scope
in the builder list item factory that didn't involve a magic
incantation in the XML file. And I do not want developers to know magic
incantations to do a thing that should pretty much always be done.
gtk/gtkbuilder.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
---
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index 5b5a66eb907..4be00a4206b 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -217,6 +217,7 @@
#include "gdkpixbufutilsprivate.h"
#include "gtkbuildable.h"
+#include "gtkbuilderlistitemfactory.h"
#include "gtkbuilderscopeprivate.h"
#include "gtkdebug.h"
#include "gtkexpression.h"
@@ -707,6 +708,22 @@ gtk_builder_take_bindings (GtkBuilder *builder,
priv->bindings = g_slist_concat (priv->bindings, bindings);
}
+static void
+ensure_special_construct_parameters (GtkBuilder *builder,
+ GType object_type,
+ ObjectProperties *construct_parameters)
+{
+ GtkBuilderPrivate *priv = gtk_builder_get_instance_private (builder);
+ GValue value = G_VALUE_INIT;
+
+ if (g_type_is_a (object_type, GTK_TYPE_BUILDER_LIST_ITEM_FACTORY))
+ {
+ g_value_init (&value, GTK_TYPE_BUILDER_SCOPE);
+ g_value_set_object (&value, priv->scope);
+ object_properties_add (construct_parameters, "scope", &value);
+ }
+}
+
GObject *
_gtk_builder_construct (GtkBuilder *builder,
ObjectInfo *info,
@@ -804,6 +821,8 @@ _gtk_builder_construct (GtkBuilder *builder,
}
else
{
+ ensure_special_construct_parameters (builder, info->type, construct_parameters);
+
obj = g_object_new_with_properties (info->type,
construct_parameters->len,
(const char **) construct_parameters->names->pdata,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]