[Previous] [Contents] [Next]

18. Advanced Event and Signal Handling

18.1 Signal Functions

Connecting and Disconnecting Signal Handlers

 FUNCTION gtk_signal_connect( object : pGtkObject ; name : pgchar ;
      func : GtkSignalFunc ; name : pgchar ; func : pGtkSignalFunc ;
      func_data : gpointer ) : guint;

 FUNCTION gtk_signal_connect_after( object : pGtkObject ; name : pgchar ;
      func : GtkSignalFunc ; func_data : gpointer ) : guint;

 FUNCTION gtk_signal_connect_object( object : pGtkObject ; name : pgchar ;
      func : GtkSignalFunc ; slot_object : pGtkObject ) : guint;

 FUNCTION gtk_signal_connect_object_after( object : pGtkObject ; name : pgchar ;
      func : GtkSignalFunc ; slot_object : pGtkObject ) : guint;

 FUNCTION gtk_signal_connect_full( object : pGtkObject ; name : pgchar ;
      func : GtkSignalFunc ; marshall : GtkCallbackMarshal ; data : gpointer ;
      destroy_func : GtkDestroyNotify ; object_signal : gint ;
      after : gint ) : guint;

 FUNCTION gtk_signal_connect_interp( object : pGtkObject ; name : pgchar ;
      func : GtkCallbackMarshal ; data : gpointer ; destroy_func : GtkDestroyNotify ;
      after : gint ) : guint;

 PROCEDURE gtk_signal_connect_object_while_alive( object : pGtkObject ;
      name : pgchar ; func : GtkSignalFunc ; alive_object : pGtkObject );

 PROCEDURE gtk_signal_connect_while_alive( object : pGtkObject ; signal : pgchar ;
     func : GtkSignalFunc ; func_data : gpointer ; alive_object : pGtkObject );

 PROCEDURE gtk_signal_disconnect( object : pGtkObject ; handler_id : guint );

 PROCEDURE gtk_signal_disconnect_by_func( object : pGtkObject ;
      func : GtkSignalFunc ; data : gpointer );

Blocking and Unblocking Signal Handlers

 PROCEDURE gtk_signal_handler_block( object : pGtkObject ; handler_id : guint );

 PROCEDURE gtk_signal_handler_block_by_func( object : pGtkObject ;
      func : GtkSignalFunc ; data : gpointer );

 PROCEDURE gtk_signal_handler_block_by_data( object : pGtkObject ; data : gpointer );

 PROCEDURE gtk_signal_handler_unblock( object : pGtkObject ; handler_id : guint );

 PROCEDURE gtk_signal_handler_unblock_by_func( object : pGtkObject ;
      func : GtkSignalFunc ; data : gpointer );

 PROCEDURE gtk_signal_handler_unblock_by_data( object : pGtkObject ;
      data : gpointer );

Emitting and Stopping Signals

 PROCEDURE gtk_signal_emit( object : pGtkObject ; signal_id : guint ; ... );

 PROCEDURE gtk_signal_emit_by_name( object : pGtkObject ; name : pgchar ; ... );

 PROCEDURE gtk_signal_emitv( object : pGtkObject ; signal_id : guint ;
      params : pGtkArg );

 PROCEDURE gtk_signal_emitv_by_name( object : pGtkObject ; name : pgchar ;
      params : pGtkArg );

 FUNCTION gtk_signal_n_emissions( object : pGtkObject ; signal_id : guint ) : guint;

 FUNCTION gtk_signal_n_emissions_by_name( object : pGtkObject ;
      name : pgchar ) : guint;

 PROCEDURE gtk_signal_emit_stop( object : pGtkObject ; signal_id : guint );

 PROCEDURE gtk_signal_emit_stop_by_name( object : pGtkObject ; name : pgchar );

 

[Previous] [Contents] [Next]

18.2 Signal Emission and Propagation

Signal emission is the process whereby GTK runs all handlers for a specific object and signal.

First, note that the return value from a signal emission is the return value of the last handler executed. Since event signals are all of type GTK_RUN_LAST, this will be the default (GTK supplied) handler, unless you connect with gtk_signal_connect_after().

The way an event (say button_press_event) is handled, is:

Some consequences of the above are:

[Previous] [Contents] [Next]