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

Re: radiobutton callback



I would expect the callback to be called twice when you click on one of the
radiobuttons.  Since clicking on one button de-selects the other, GTK probably emits
an extra 'clicked' signal for the button that is being de-selected.

If you want to check to see which button was selected, use something like
pressed = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))
which will return true if the button is pressed in.

As for the bad value you get initially, you probably need to make one of the buttons
active before you handle the clicks.  Try putting a
gtk_togglebutton_set_active(GTK_TOGGLE_BUTTON(button), TRUE) in your create function
and see if that helps.

-Josh

Peter Wurmsdobler wrote:
> 
> Hello,
> 
> Actually I want to pass different predefined values to
> a single callback for two radiobuttons, but the callback
> seems to be called twice for a single mouse click, and
> in addition the passed data changes. I do:
> 
> void spin_radiobutton_clicked( GtkButton *button, gpointer data )
>     {
>     int *x = data;
>     printf("*x = %d\n", *x );
>     }
> 
> void create(void)
>     {
>     int spin_right = RIGHT;
>     int spin_left  = LEFT;
> 
>     spin_group = NULL;
>     spin_left_radiobutton =
>         gtk_radio_button_new_with_label( spin_group,
>         LEFT_RADIOBUTTON_TEXT );
>     spin_group = gtk_radio_button_group(
>         GTK_RADIO_BUTTON( spin_left_radiobutton) );
>     gtk_signal_connect(
>         GTK_OBJECT( spin_left_radiobutton ), "clicked",
>         GTK_SIGNAL_FUNC( spin_radiobutton_clicked ),
>         &spin_left );
> 
>     spin_right_radiobutton =
>         gtk_radio_button_new_with_label( spin_group,
>         RIGHT_RADIOBUTTON_TEXT );
>     spin_group = gtk_radio_button_group(
>         GTK_RADIO_BUTTON( spin_right_radiobutton) );
>     gtk_signal_connect(
>         GTK_OBJECT( spin_right_radiobutton ), "clicked",
>         GTK_SIGNAL_FUNC( spin_radiobutton_clicked ),
>         &spin_right );
>     }
> 
> Even though I thought of using something like &RIGHT instead
> of using an extra int spin_right = RIGHT; anyway, the debug
> messages show:
> 
> *x = -1073743848
> *x = 134836864
> 
> *x = 134836864
> *x = 0
> 
> *x = 0
> *x = 134836864
> 
> So, sometimes it works, sometimes not, which makes me
> think that a pointer is freed sometimes. Any hints?
> peterw
> --
> Dr. Peter Wurmsdobler
> 
>       CTM - Centre de Transfert des Microtechniques
> 39, av. de l'Observatoire, BP-1445, 25007 Besancon CEDEX 3
> TELEPHONE: +33 3 81 47 70 20  TELECOPIE: +33 3 81 47 70 21
>          E-mail: peter.wurmsdobler@ctm-france.com
> 
>                   Ceterum censeo MIRCOSOFTem esse delendam.
> 
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list




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