binding: Add SYNC_CREATE to the flags

When creating a binding between two object properties we might want to
automatically synchronize the two values at the moment of the binding
creation, instead of waiting for the next change.

The G_BINDING_SYNC_CREATE flag does exactly what it says on the tin.

https://bugzilla.gnome.org/show_bug.cgi?id=622281
This commit is contained in:
Emmanuele Bassi
2010-06-21 12:26:42 +01:00
parent d3af9c0ec5
commit f587cb57f2
3 changed files with 50 additions and 1 deletions

View File

@@ -124,6 +124,7 @@ g_binding_flags_get_type (void)
static const GFlagsValue values[] = {
{ G_BINDING_DEFAULT, "G_BINDING_DEFAULT", "default" },
{ G_BINDING_BIDIRECTIONAL, "G_BINDING_BIDIRECTIONAL", "bidirectional" },
{ G_BINDING_SYNC_CREATE, "G_BINDING_SYNC_CREATE", "sync-create" },
{ 0, NULL, NULL }
};
GType g_define_type_id =
@@ -893,6 +894,14 @@ g_object_bind_property_full (gpointer source,
binding->transform_data = user_data;
binding->notify = notify;
/* synchronize the target with the source by faking an emission of
* the ::notify signal for the source property; this will also take
* care of the bidirectional binding case because the eventual change
* will emit a notification on the target
*/
if (flags & G_BINDING_SYNC_CREATE)
on_source_notify (binding->source, binding->source_pspec, binding);
return binding;
}