diff --git a/xfconf/xfconf-binding.c b/xfconf/xfconf-binding.c index 22db0f4..1adb7fb 100644 --- a/xfconf/xfconf-binding.c +++ b/xfconf/xfconf-binding.c @@ -179,9 +179,19 @@ xfconf_g_property_object_notify(GObject *object, if(g_value_transform(&src_val, &dst_val)) { g_signal_handler_block(G_OBJECT(binding->channel), binding->channel_handler); - xfconf_channel_set_property(binding->channel, - binding->xfconf_property, - &dst_val); + + /* we can't set empty arrays anymore, therefore we remove them */ + if(G_UNLIKELY(G_VALUE_TYPE(&dst_val) == G_TYPE_PTR_ARRAY + && ((GPtrArray*)g_value_get_boxed(&dst_val))->len == 0)){ + xfconf_channel_reset_property(binding->channel, + binding->xfconf_property, + FALSE); + }else{ + xfconf_channel_set_property(binding->channel, + binding->xfconf_property, + &dst_val); + } + g_signal_handler_unblock(G_OBJECT(binding->channel), binding->channel_handler); }