Gtk+ is an event-driven toolkit. This means that the application
sleeps in the main loop until something happens, after which the control
is passed to the appropriate function.
The passing of control is implemented via signals. When a widget
experiences an event, it emits a signal. Every signal is uniquely
identified by name, but two different widgets may have the signal of the
same name but different meaning. Signals are inherited by widgets from up the
widget hierarchy, i.e. GtkButton will have all the signals that GtkWidget
has.
Signals present a way to customize application's behavior according
to the developer's needs and user's actions. Each signal has a default
internal handler, but one or more custom handlers can be connected to
a signal to initiate some sort of response.
For example, the 'OK' button (GtkButton) has the clicked signal that
is emitted when the user clicks the button with the mouse. You may want to
connect a custom handler to this signal in order to perform an action that the
'OK' button implies.