I have been playing with a small application using the new (in gtk3) GtkSwitch 
("light switch" style) widget.
The reference manual does not mention any signal specific to this widget,   and 
I think it would be nice to have one.      I want a signal for when the state 
is toggled,  e.g. "switched".
I eventually (after a lot of trial and error) found I could almost do what I 
needed by using the "event-after" signal,  (snippet below),  but with that 
signal,  I found that the data pointer is null (zero) on entry to my callback.  
 I don't know if that is because it is not really valid to use a signal with 
this widget at all?  or some obscure bug?   or just maybe that gtk3 is a bit 
new?

By the way,   the trial-and-error part is that although I found many different 
signal types which were delivered to my cb,   the event-after was the only one 
that was delivered exactly once and once only,  after the user toggled the 
switch.

GtkWidget *do_light_switch (GtkWidget *do_widget){  [...] GtkSwitch 
*light_switch_widg;  GtkImage *light_on_image;
      g_signal_connect_object ( GTK_WIDGET (light_switch_widg), "event-after",  
              G_CALLBACK (turn_light_on_off) , GTK_WIDGET (light_on_image) , 
G_CONNECT_AFTER);

In my callback,  the data pointer is 0 (confirmed with gdb)  yet the pointer is 
set correctly in the above g_signal_connect_object .I eventually resorted to 
storing the value of the light_on_image in a static savearea and referencing it 
from there in the cb :
      save_light_on_image_ptr =  GTK_WIDGET (light_on_image);
(which worked and also confirmed that the pointer was set correctly at the time 
of the g_signal_connect_object).
Or can someone spot something I did wrong?
John Lumby
                                          
_______________________________________________
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