propagate_event

function propagate_event(widget:Gtk.Widget, event:Gdk.Event):void {
    // Gjs wrapper for gtk_propagate_event()
}

Sends an event to a widget, propagating the event to parent widgets if the event remains unhandled.

Events received by GTK+ from GDK normally begin in main_do_event. Depending on the type of event, existence of modal dialogs, grabs, etc., the event may be propagated; if so, this function is used.

propagate_event calls Gtk.Widget.prototype.event on each widget it decides to send the event to. So Gtk.Widget.prototype.event is the lowest-level function; it simply emits the Gtk.Widget::event and possibly an event-specific signal on a widget. propagate_event is a bit higher-level, and main_do_event is the highest level.

All that said, you most likely don't want to use any of these functions; synthesizing events is rarely needed. There are almost certainly better ways to achieve your goals. For example, use Gdk.invalidate_rect or Gtk.Widget.prototype.queue_draw instead of making up expose events.

widget

a Gtk.Widget

event

an event