NOTE: This page is a recollection of what I've written previously. I do not guarantee it's accuracy.
The mouse events for GTK applications are received from the window manager by GDK and dispatched to the appropriate window via a registered callback. “Container” widgets will then dispatch it to the appropriate child, whilst funnelling all events through a single signal before dispatching to more specific ones.