Event Handling

Picking Events

This chapter provides a documentation about event handling internals of the canvas.

Picking Events

To add support for %GDK_EVENT_ENTER and %GDK_EVENT_LEAVE events, we need some caching mechanism that stores the last element, so our synthesized events can always appear in pairs.

On every %GDK_EVENT_MOTION event we look for the deepest nested child that lies under the pointer. This will be store in the @current field of the #CcViewWidget. If that changes, %GDK_EVENT_ENTER and %GDK_EVENT_LEAVE events get emitted.