     ] when* ;
 
 :: connect-user-input-signals ( win -- )
-    win "motion-notify-event" [ on-motion ]
+    win "motion-notify-event" [ on-motion yield ]
     GtkWidget:motion-notify-event connect-signal
-    win "leave-notify-event" [ on-leave ]
+    win "leave-notify-event" [ on-leave yield ]
     GtkWidget:leave-notify-event connect-signal
-    win "button-press-event" [ on-button-press ]
+    win "button-press-event" [ on-button-press yield ]
     GtkWidget:button-press-event connect-signal
-    win "button-release-event" [ on-button-release ]
+    win "button-release-event" [ on-button-release yield ]
     GtkWidget:button-release-event connect-signal
-    win "scroll-event" [ on-scroll ]
+    win "scroll-event" [ on-scroll yield ]
     GtkWidget:scroll-event connect-signal
-    win "key-press-event" [ on-key-press/release ]
+    win "key-press-event" [ on-key-press/release yield ]
     GtkWidget:key-press-event connect-signal
-    win "key-release-event" [ on-key-press/release ]
+    win "key-release-event" [ on-key-press/release yield ]
     GtkWidget:key-release-event connect-signal
-    win "focus-in-event" [ on-focus-in ]
+    win "focus-in-event" [ on-focus-in yield ]
     GtkWidget:focus-in-event connect-signal
-    win "focus-out-event" [ on-focus-out ]
+    win "focus-out-event" [ on-focus-out yield ]
     GtkWidget:focus-out-event connect-signal ;
 
 ! Window state events

    im win gtk_widget_get_window gtk_im_context_set_client_window
    im f gtk_im_context_set_use_preedit

    im "commit" [ on-commit ]
    GtkIMContext:commit win connect-signal-with-data
    im "retrieve-surrounding" [ on-retrieve-surrounding ]
    GtkIMContext:retrieve-surrounding win connect-signal-with-data
    im "delete-surrounding" [ on-delete-surrounding ]
    GtkIMContext:delete-surrounding win connect-signal-with-data

    win "key-press-event" [ im-on-key-event ]
    GtkWidget:key-press-event im connect-signal-with-data
    win "key-release-event" [ im-on-key-event ]
    GtkWidget:key-release-event im connect-signal-with-data
    win "focus-in-event" [ im-on-focus-in ]
    GtkWidget:focus-out-event im connect-signal-with-data
    win "focus-out-event" [ im-on-focus-out ]
    GtkWidget:focus-out-event im connect-signal-with-data
    win "destroy" [ im-on-destroy ]
    GtkObject:destroy im connect-signal-with-data ;

! Window controls

        ] [ gtk_dialog_run drop ] bi
    ] with-destructors ;

M: gtk-ui-backend (with-ui)
    [
        0 gint <ref> f void* <ref> gtk_init
