Richard,

I'm also, as you are, a rather inexperienced GTK programmer, but I hope 
to still help you by the following, without immediately digging into all 
kinds of technical details :
whereever the _swapped variant is used, that is done to call a callback 
from within a widget, to a procedure that's applicable on another widget 
(or even, in most cases another widget class).

So e.g., a button press that should be calling some callback procedure 
on the window it is in, will use the _swapped variant (passing the 
window pointer as user_data argument). Doing so will make GTK's internal 
mechanics to "convert/abuse" that user_data argument's value, by putting 
it into the callback's call as it's *first* argument), so that the 
window's callback doesn't even realize it used to be the original 
widget's call's user_data argument).

Hope this helps you more than it eventually further confuses you,

Kind regards,

PhB

Richard Riley wrote:

>"Matt Hoosier" <[EMAIL PROTECTED]> writes:
>
>  
>
>>On 11/25/06, Richard <[EMAIL PROTECTED]> wrote:
>>    
>>
>>>Could someone explain the reason for this function
>>>
>>>"g_signal_connect_swapped"
>>>
>>>I have read the manual here:
>>>
>>>http://www.gtk.org/tutorial/x159.html
>>>
>>>where it says:
>>>
>>>,----
>>>| g_signal_connect_swapped() is the same as g_signal_connect() except that
>>>| the instance on which the signal is emitted and data will be swapped
>>>| when calling the handler. So when using this function to connect
>>>| signals, the callback should be of the form
>>>|
>>>|
>>>| void callback_func( gpointer   callback_data,
>>>|                     ... /* other signal arguments */
>>>|                     GtkWidget *widget);
>>>|
>>>| where the object is usually a widget.
>>>`----
>>>
>>>Could anyone express this a little clearer? I (as a gtk beginner) can
>>>see no reason for it.
>>>      
>>>
>>This just means that the "widget" and "callback_data" pointers will be
>>pushed onto the call stack in the opposite order from their ordering
>>if hooked up with g_signal_connect(). If you're designing your own
>>callback function, this probably isn't useful; just use
>>g_signal_connnect() with a callback that has GObject* and gpointer
>>parameters [in that order].
>>    
>>
>
>I can see the order has changed - it was the reason I was looking for. I
>don't currently see the point. Maybe it will become clearer as I learn
>more.
>_______________________________________________
>gtk-app-devel-list mailing list
>gtk-app-devel-list@gnome.org
>http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
>
>  
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to