Thanks for your reply! I will test it and then file a bug.
Regards
Jörn

Am Mittwoch, den 30.09.2009, 06:12 +0200 schrieb Jan Hudec:
> On Tue, Sep 29, 2009 at 09:16:24 +0200, JM wrote:
> > I need some help with the binding for TreeViewRowSeparatorFunc.
> > Something is wrong here.
> > If I use
> > 
> >   this.set_row_separator_func(separator_func, null, destrnot);
> 
> I think there are two parameters too many.
> 
> It looks like a problem in the .vapi -- since C signature is
> 
>     void gtk_tree_view_set_row_separator_func(
>             GtkTreeView *tree_view,
>             GtkTreeViewRowSeparatorFunc func,
>             gpointer data,
>             GDestroyNotify destroy);
> 
> The corresponding Vala signature should be:
> 
>     class TreeView { ...
>         void set_row_separator_func(owned Gtk.TreeViewRowSeparatorFunc func);
>     ... }
> 
> But it's not. File a bug. Thanks.
>               ^^^^^^^^^^^
> 
> By the way, the binding for get_row_separator_func won't work either and
> should probably just be removed, because it seems unfixable (it returns just
> the function pointer, which is not enough to reconstruct a closure).
> 
> > in my TreeView widget together with
> >     
> >   public static void destrnot() {
> >     return; //just for testing
> >   }
> >     
> >   private bool separator_func(Gtk.TreeModel model, Gtk.TreeIter iter) {
> >    print("in TreeViewRowSeparatorFunc\n");
> >    return false; //just for testing
> >  }
> >
> > I get the following ccode:
> > 
> >   gtk_tree_view_set_row_separator_func (
> >      (GtkTreeView*) self,
> > _xnoise_media_browser_separator_func_gtk_tree_view_row_separator_func,
> > self, 
> > NULL, 
> > _xnoise_media_browser_destrnot_gdestroy_notify);
> > 
> > The vapi file says:
> > 
> >   public void set_search_position_func (Gtk.TreeViewSearchPositionFunc
> > func, 
> > void* data, 
> > GLib.DestroyNotify destroy);
> > 
> > I'm not sure how vala handles void* but obviously in the ccode there is
> > one too many 'self'. 
> 
> No, the self is fine. The problem is not in void *, which is handled just
> fine. The problem is, that a non-static delegate argument consists of the
> function pointer, the taget (user data) pointer and, if modified with
> 'owned', the destroy notify pointer.
> 
> Remember that the separator_func is an /instance/ method? So the instance
> must be passed in somehow -- that's why the 'self' is there. And since vala
> is supposed to take care of memory management for you, it will also pass
> correct unref function if the delegate is owned.
> 
> > Can anybody give me a hint how to correct the vapi? 
> 
> See above.
> 

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to