La emisión de señales es el proceso por el cual GTK+ ejecuta todos los manejadores de una señal y un objeto específicos.
Debe tenerse en cuenta en primer lugar que el valor de retorno de una
emisión de señal es el valor de retorno del último manejador ejecutado. Como las
señales de eventos son todas del tipo RUN_LAST, este valor será el del
manejador predeterminado (dado por GTK+) a menos que se use el método
connect_after().
La forma en la que se trata un evento (por ejemplo "button_press_event") es:
Empezar con el control donde se produjo el evento.
Se emite para él la señal genérica "event". Si ese manejador devuelve un
valor TRUE (verdadero) se detiene el procesamiento.
En otro caso, se emite una señal específica "button_press_event". Si ésta
devuelve TRUE (verdadero) se detiene el procesamiento.
En caso contrario, se pasa al padre del control y se repiten los dos pasos anteriores.
Se continúa hasta que algún manejador devuelve TRUE, o hasta que
se alcanza al control de más alto nivel.
Algunas consecuencias de lo anterior son:
El valor de retorno de tu manejador no tendrá efecto si hay
un manejador predeterminado, a menos que lo conectes con
connect_after().
Para evitar que se llame al manejador predeterminado, tienes
que usar el método connect() y utilizar
emit_stop_by_name() - el valor de retorno sólo afecta a
si la señal se propaga, pero no a la emisión actual.