mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user