forked from AuroraMiddleware/gtk
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.
This commit is contained in:
parent
48a223abdf
commit
aad9adf8c3
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user