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.