Skip to content

Add override for g_object_bind_property_full()

Florian Müllner requested to merge fmuellner/gjs:bind-property-full into master

g_object_bind_property_full() isn't introspectable, because two callbacks share the same closure/destroy. That's why g_object_bind_with_closures() was added, but unfortunately that doesn't work for us either due to a combination of the following:

  1. we special-case GValue arguments and pass the unwrapped value to javascript instead of the actual GValue

  2. there are no annotations for GClosures ("the 3rd parameter is (out)")

Changing the former would be a massive API break, not to mention that unwrapping GValues is almost always what we want.

The latter would require lots of work on the gobject-introspection side for a very limited number of use cases.

A custom override on the other hand only needs a very thin wrapper, so add that to finally make bind_property_full() available to JS.

The cast from (GDestroyNotify) to (GClosureNotify) currently triggers a compiler warning that I didn't manage to get rid of, any help on that would be appreciated.

Fixes #241 (closed)

Edited by Florian Müllner

Merge request reports