Re: [Vala] broken gtk+ binding?
- From: "Nguyen Thai Ngoc Duy" <pclouds gmail com>
- To: vala-list gnome org
- Subject: Re: [Vala] broken gtk+ binding?
- Date: Sun, 9 Dec 2007 21:32:12 +0700
On Dec 9, 2007 9:23 PM, Phil Housley <undeconstructed gmail com> wrote:
On 09/12/2007, Nguyen Thai Ngoc Duy <pclouds gmail com> wrote:
Hi,
I tried this code:
class MyComp : Gtk.Window {
construct {
var b = new Gtk.Button.with_label("hellp");
b.clicked += on_clicked;
add(b);
}
void on_clicked() {
GLib.stdout.printf("Help!\n");
}
static int main(string[] p) {
Gtk.init(out p);
MyComp w = new MyComp();
w.show_all();
Gtk.main();
return 0;
}
}
The generated code for signal "clicked" was
static void my_comp_on_clicked (MyComp* self) {
g_return_if_fail (IS_MY_COMP (self));
fprintf (stdout, "Help!\n");
}
It should have been *_clicked(GtkWidget*, MyComp*). Was it code
generation broken or did I write something wrong? Vala revision was
760.
Thanks
--
Duy
A signal handler function should be declared with a first argument of
the type of the object emitting the signal (GtkButton). Then vala
will pass the object receiving it (MyComp) automatically as the
user_data argument.
void on_clicked(Gtk.Button btn) { ... }
Should work fine.
Indeed. I looked at gtk+-2.0.vapi to know the prototype and it was
public signal void clicked ();
I changed to on_clicked(Gtk.Button btn) and it worked.
But vala did not notice me I passed a function that did not match the
signal prototype? :(
Alternatively the equivalent lambda:
b.clicked += btn => { ... };
--
Phil Housley
_______________________________________________
Vala-list mailing list
Vala-list gnome org
http://mail.gnome.org/mailman/listinfo/vala-list
--
Duy
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]