summaryrefslogtreecommitdiff
path: root/gtk/gtkbuilder.c
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-06-29 11:45:33 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2011-06-29 11:45:33 -0300
commitea81c710d0c0df31035297c4be6ca50b196560c6 (patch)
tree23602c757c3acc96a0d52cfc9e99bd86b887e4c0 /gtk/gtkbuilder.c
parent445ac0e650793087b6f1a2d756f8539a846f93d4 (diff)
downloadgtk+-ea81c710d0c0df31035297c4be6ca50b196560c6.tar.gz
Make GtkBuilder do not delay construct properties that can be resolved
(so construct is respected when possible) and skip construct only props that can not.
Diffstat (limited to 'gtk/gtkbuilder.c')
-rw-r--r--gtk/gtkbuilder.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index 3e970e037a..d11fcf9c18 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -503,29 +503,29 @@ gtk_builder_get_parameters (GtkBuilder *builder,
if (G_IS_PARAM_SPEC_OBJECT (pspec) &&
(G_PARAM_SPEC_VALUE_TYPE (pspec) != GDK_TYPE_PIXBUF))
{
- if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
+ GObject *object = gtk_builder_get_object (builder, prop->data);
+
+ if (object)
+ {
+ g_value_init (&parameter.value, G_OBJECT_TYPE (object));
+ g_value_set_object (&parameter.value, object);
+ }
+ else
{
- GObject *object;
- object = gtk_builder_get_object (builder, prop->data);
- if (!object)
+ if (pspec->flags & G_PARAM_CONSTRUCT_ONLY)
{
g_warning ("Failed to get constuct only property "
"%s of %s with value `%s'",
prop->name, object_name, prop->data);
continue;
}
- g_value_init (&parameter.value, G_OBJECT_TYPE (object));
- g_value_set_object (&parameter.value, object);
- }
- else
- {
+ /* Delay setting property */
property = g_slice_new (DelayedProperty);
property->object = g_strdup (object_name);
property->name = g_strdup (prop->name);
property->value = g_strdup (prop->data);
builder->priv->delayed_properties =
g_slist_prepend (builder->priv->delayed_properties, property);
-
continue;
}
}