Containers that enact a layout policy, like
GtkListBox, don’t typically respond to events, leaving it to their children widgets. That’s why widgets like
GtkEventBox exist in the first place.
Widgets in GTK3 don’t really use
input-output windows, unless they both need to draw something and respond to events. Drawing on a real
GdkWindow introduces limitations, as the rendering gets clipped to the window’s region, for instance.
The typical scenarios are:
- no window: draws on the parent’s surface, does not react to events
- input-only window: draws on the parent’s surface, reacts to events
- input-output window: draws on its own surface, reacts to events
Most widgets in GTK3 belong to the first two groups, and very few to the last one.