Skip to content
  • Sam Thursfield's avatar
    Make GListModelInterface::get_item usable from GObject Introspection bindings · bb26bc29
    Sam Thursfield authored and Philip Withnall's avatar Philip Withnall committed
    Language bindings have so far been unable to implement the GListModel
    interface because the ::get_item virtual function returns a
    non-bindable type (gpointer). The `gpointer` type gets translated into
    `void` by G-I meaning that get_item() implementations can't return any
    items.
    
    We can set the return type of the get_item() vfunc explicitly to
    GObject, which fixes the issue.
    
    This patch also removes the existing (type GObject) annotation on
    g_list_model_get_item(), which is necessary because if its return type
    matches that of the get_item() vfunc, G-I connects the two and
    propagates the 'skip' annotation from one to the other resulting in the
    get_item() vfunc being hidden. There's no API break here because the
    'skip' annotation makes g_list_model_get_item() invisible to G-I users
    anyway.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=787271
    bb26bc29