Objects (can) communicate with other objects by emitting signals.
Signals can be anything (new ones can easily be created).
GTK+ widgets emit signals when they are deleted, changed, resized, edited, focused, clicked, dragged, ...
Handlers for signals can be changed. Priorities can be assigned and bubbling of signals can be terminated.