эмиссия сигнала и распространение
signal emission - процесс, посредством которого
gtk выполняет все обработчики для
определенного объекта и сигнала.
для начала отметьте, что возвращаемое
значение от эмиссии сигнала (signal emission)
- возвращаемое значение последнего
выполняемого обработчика. так как
события сигналов все имеют тип
gtk_run_last, он же будет установлен
(самим gtk) по умолчанию обработчиком,
если вы не вызовите gtk_signal_connect_after().
событием
обработчика (говорят "button_press_event")
может быть:
начать
с виджета на котором произошло событие.
воспроизвести
основной сигнал "event". если этот
обработчик вернул значение true, остановить
весь процесс.
в другом
случае воспроизвести специфический
сигнал "button_press_event". если возвращено
true, остановить весь процесс.
иначе, вернутся к родителю виджета, и
повторить вышеупомянутые два шага.
продолжать
пока обработчик сигнала не вернул true,
или пока виджет верхнего уровня не
достиг предела.
некоторые последствия вышеупомянутого:
возвращаемое значение вашего обработчика
не будет иметь никакого эффекта, если
это обработчик по умолчанию, или если
вы не вызываете gtk_signal_connect_after().
чтобы обработчик значения по умолчанию
не выполнился, вы должны вызвать
gtk_signal_connect() и использовать
gtk_signal_emit_stop_by_name() - возвращаемое значение
влияет на размножение сигнала, но не
на текущую эмиссию.
|