Re: learning gtk - callbacks



On Fri, 2004-09-24 at 16:30 -0700, greg wolski wrote:
> Hi there,
> I am trying to learn gtk and I have a hard time to understand signals.
> This comes from helloworld in tutorial
> 
> g_signal_connect (G_OBJECT (window), "delete_event",
>                   G_CALLBACK (delete_event), NULL);
> g_signal_connect (G_OBJECT (window), "destroy",
>                   G_CALLBACK (destroy), NULL);
> 
> 
> Question:
> How does gtk know what functions it should call?

The third argument to g_signal_connect defines which function GTK calls.
In your examples "G_CALLBACK (delete_event)" and "G_CALLBACK (destroy)"
are the third arguments.  The G_CALLBACK () is to cast the function
pointer to the correct type, the actual functions are called
"delete_event" and "destroy", which happens to be the same as the signal
names, this is just coincidence you can call them anything you want.

> I mean for me it basically says: call this or this.
> Is it about the arguments that are declared in callback functions?

No, it is about the functions you pass as the third argument to
g_signal_connect.

> This is a little bit confusing because no arguments are indicated in
> those connections.

The fourth argument to g_signal_connect is a pointer you can use to pass
an extra argument to the callback function.  The signatures for callback
functions depend on the signal type and the object type.  These
signatures are defined in the API documents.  The convention is that the
final argument to a callback is a "gpointer data" which will be the
pointer you supply as the fourth argument to g_signal_connect.  In your
example this is NULL in both cases.

Keith.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]