Programmation GTK/Compléments sur les gestionnaires de signaux
Regardons à nouveau la déclaration de gtk_signal_connect.
gint gtk_signal_connect (GtkObject *object, gchar *name,
GtkSignalFunc func, gpointer func_data);
Vous avez remarqué que le valeur de retour est de type gint
? Il s'agit d'un marqueur qui identifie votre fonction de rappel. Comme on le disait plus haut, on peut avoir autant de fonctions de rappel que l'on a besoin, par signal et par objet, et chacune sera exécutée à son tour, dans l'ordre dans lequel elle a été attachée. Ce marqueur vous permet d'ôter ce rappel de la liste en faisant :
void gtk_signal_disconnect (GtkObject *object, gint id);
Ainsi, en passant le widget dont on veut supprimer le gestionnaire et le marqueur ou identificateur retourné par l'une des fonctions signal_connect, on peut déconnecter un gestionnaire de signal.
Une autre fonction permettant de supprimer tous les gestionnaires de signaux pour un objet est :
gtk_signal_handlers_destroy (GtkObject *object);
Cet appel n'a pas trop besoin d'explications. Il ôte simplement tous les gestionnaires de signaux de l'objet passé en paramètre.