Index: xfconf/xfconf-private.h =================================================================== --- xfconf/xfconf-private.h (revision 29967) +++ xfconf/xfconf-private.h (working copy) @@ -28,14 +28,16 @@ GType *member_types; } XfconfNamedStruct; -DBusGConnection *_xfconf_get_dbus_g_connection(); -DBusGProxy *_xfconf_get_dbus_g_proxy(); +DBusGConnection *_xfconf_get_dbus_g_connection(void); +DBusGProxy *_xfconf_get_dbus_g_proxy(void); XfconfNamedStruct *_xfconf_named_struct_lookup(const gchar *struct_name); -void _xfconf_channel_shutdown(); +void _xfconf_channel_shutdown(void); +const gchar *_xfconf_channel_get_name(XfconfChannel *channel); +const gchar *_xfconf_channel_get_property_base(XfconfChannel *channel); -void _xfconf_g_bindings_init(); -void _xfconf_g_bindings_shutdown(); +void _xfconf_g_bindings_init(void); +void _xfconf_g_bindings_shutdown(void); #endif /* __XFCONF_PRIVATE_H__ */ Index: xfconf/xfconf-channel.c =================================================================== --- xfconf/xfconf-channel.c (revision 29967) +++ xfconf/xfconf-channel.c (working copy) @@ -283,7 +283,18 @@ } } +const gchar * +_xfconf_channel_get_name(XfconfChannel *channel) +{ + return channel->channel_name; +} +const gchar * +_xfconf_channel_get_property_base(XfconfChannel *channel) +{ + return channel->property_base; +} + static void xfconf_channel_property_changed(DBusGProxy *proxy, const gchar *channel_name, Index: xfconf/xfconf-binding.c =================================================================== --- xfconf/xfconf-binding.c (revision 29967) +++ xfconf/xfconf-binding.c (working copy) @@ -323,8 +323,10 @@ GType object_property_type) { XfconfGBinding *binding; - gchar buf[1024], *channel_name = NULL; + gchar buf[1024]; GSList *bindings; + gchar *real_property = (gchar *)xfconf_property; + const gchar *property_base; binding = g_slice_new0(XfconfGBinding); binding->channel = channel; @@ -371,13 +373,17 @@ bindings, (GDestroyNotify)g_slist_free); } - g_object_get(G_OBJECT(channel), "channel-name", &channel_name, NULL); + property_base = _xfconf_channel_get_property_base(channel); + if(property_base != NULL) + real_property = g_strconcat(property_base, xfconf_property, NULL); + binding->call = xfconf_client_get_property_async(_xfconf_get_dbus_g_proxy(), - channel_name, - xfconf_property, + _xfconf_channel_get_name (channel), + real_property, xfconf_g_binding_initial_value_received, binding); - g_free(channel_name); + if (real_property != xfconf_property) + g_free (real_property); binding->id = ++__last_binding_id; if(G_UNLIKELY(binding->id == 0)) {