Package: gtk

Function gtk-main-do-event

Lambda List

gtk-main-do-event (event)

Arguments

event -- a gdk-event instance to process normally passed by GDK

Details

Processes a single GDK event. This is public only to allow filtering of events between GDK and GTK. You will not usually need to call this function directly.

While you should not call this function directly, you might want to know how exactly events are handled. So here is what this function does with the event:
  • Compress enter/leave notify events. If the event passed build an enter/leave pair together with the next event peeked from GDK, both events are thrown away. This is to avoid a backlog of (de-)highlighting widgets crossed by the pointer.
  • Find the widget which got the event. If the widget cannot be determined the event is thrown away unless it belongs to a INCR transaction. In that case it is passed to the function gtk_selection_incr_event().
  • Then the event is pushed onto a stack so you can query the currently handled event with the function gtk-current-event.
  • The event is sent to a widget. If a grab is active all events for widgets that are not in the contained grab widget are sent to the latter with a few exceptions:
    • Deletion and destruction events are still sent to the event widget for obvious reasons.
    • Events which directly relate to the visual representation of the event widget.
    • Leave events are delivered to the event widget if there was an enter event delivered to it before without the paired leave event.
    • Drag events are not redirected because it is unclear what the semantics of that would be.
  • Another point of interest might be that all key events are first passed through the key snooper functions if there are any. Read the description of the function gtk_key_snooper_install() if you need this feature.
  • After finishing the delivery the event is popped from the event stack.
 

See also

2020-8-22