Zitat von
John W
Zudem würde ich int i in den for-Header packen, ist aber meist mehr eine Stilfrage:
Code:
for (int i = 0 ; ...)
Das wäre dann C99, versuche aber mich auf ANSI-C zu beschränken.
Zitat von
sommerfee
Bei GTK+ wird der Callback bei Radiobuttons (und Radio-Menüpunkten) auch dann aufgerufen, wenn der Knopf deselektiert wird, d.h. bei einer Änderung gibt es immer zwei Callbacks.
Ich weiß nicht obs was ändert, aber das ist nen Callback von nem GtkButton.
Hab zur Kontrolle mal wie folgt den Code geändert (Länge an 2 Stellen ausgeben):
Code:
void on_button1_clicked ( GtkButton *button1,
GSList *radio_list
) {
GtkWidget *radio;
unsigned int i;
for(i = 0; i < g_slist_length(radio_list); ++i) {
radio = g_slist_nth_data(radio_list, i);
/* radio != NULL check misses */
g_printf("Laenge: %d \n", g_slist_length(radio_list));
g_printf("%d. Durchlauf, ", i); /* Control of break */
if(gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(radio) )) {
g_printf("Button %d gedrueckt\n", 3-i);
break;
}
}
g_printf("Laenge2: %d \n", g_slist_length(radio_list));
g_print("Kontrolle\n");
}
Was mir dabei wieder auffällt:
Die Kontrollausgaben nach der for-Schleife wird doppelt ausgegeben, die in der for-Schleife nur einmal:
Laenge2: 0
Kontrolle
Laenge: 3
0. Durchlauf, Button 3 gedrueckt
Laenge2: 3
Kontrolle
Wenn der Callback zweimal aufgerufen würde, müsste doch auch die Schleife zweimal durchlaufen werden !?!?
Lesezeichen