ui.backend.gtk: try yield in idle callback.
parent
d3990d1eeb
commit
2929cc21f5
basis/ui/backend/gtk
|
@ -231,23 +231,23 @@ CONSTANT: action-key-codes
|
|||
] when* ;
|
||||
|
||||
:: connect-user-input-signals ( win -- )
|
||||
win "motion-notify-event" [ on-motion yield ]
|
||||
win "motion-notify-event" [ on-motion ]
|
||||
GtkWidget:motion-notify-event connect-signal
|
||||
win "leave-notify-event" [ on-leave yield ]
|
||||
win "leave-notify-event" [ on-leave ]
|
||||
GtkWidget:leave-notify-event connect-signal
|
||||
win "button-press-event" [ on-button-press yield ]
|
||||
win "button-press-event" [ on-button-press ]
|
||||
GtkWidget:button-press-event connect-signal
|
||||
win "button-release-event" [ on-button-release yield ]
|
||||
win "button-release-event" [ on-button-release ]
|
||||
GtkWidget:button-release-event connect-signal
|
||||
win "scroll-event" [ on-scroll yield ]
|
||||
win "scroll-event" [ on-scroll ]
|
||||
GtkWidget:scroll-event connect-signal
|
||||
win "key-press-event" [ on-key-press/release yield ]
|
||||
win "key-press-event" [ on-key-press/release ]
|
||||
GtkWidget:key-press-event connect-signal
|
||||
win "key-release-event" [ on-key-press/release yield ]
|
||||
win "key-release-event" [ on-key-press/release ]
|
||||
GtkWidget:key-release-event connect-signal
|
||||
win "focus-in-event" [ on-focus-in yield ]
|
||||
win "focus-in-event" [ on-focus-in ]
|
||||
GtkWidget:focus-in-event connect-signal
|
||||
win "focus-out-event" [ on-focus-out yield ]
|
||||
win "focus-out-event" [ on-focus-out ]
|
||||
GtkWidget:focus-out-event connect-signal ;
|
||||
|
||||
! Window state events
|
||||
|
@ -269,13 +269,13 @@ CONSTANT: action-key-codes
|
|||
2drop window ungraft t ;
|
||||
|
||||
:: connect-win-state-signals ( win -- )
|
||||
win "expose-event" [ on-expose yield ]
|
||||
win "expose-event" [ on-expose ]
|
||||
GtkWidget:expose-event connect-signal
|
||||
win "configure-event" [ on-configure yield ]
|
||||
win "configure-event" [ on-configure ]
|
||||
GtkWidget:configure-event connect-signal
|
||||
win "delete-event" [ on-delete yield ]
|
||||
win "delete-event" [ on-delete ]
|
||||
GtkWidget:delete-event connect-signal
|
||||
win "map-event" [ on-map yield ]
|
||||
win "map-event" [ on-map ]
|
||||
GtkWidget:map-event connect-signal ;
|
||||
|
||||
! Input methods
|
||||
|
@ -327,22 +327,22 @@ CONSTANT: action-key-codes
|
|||
im win gtk_widget_get_window gtk_im_context_set_client_window
|
||||
im f gtk_im_context_set_use_preedit
|
||||
|
||||
im "commit" [ on-commit yield ]
|
||||
im "commit" [ on-commit ]
|
||||
GtkIMContext:commit win connect-signal-with-data
|
||||
im "retrieve-surrounding" [ on-retrieve-surrounding yield ]
|
||||
im "retrieve-surrounding" [ on-retrieve-surrounding ]
|
||||
GtkIMContext:retrieve-surrounding win connect-signal-with-data
|
||||
im "delete-surrounding" [ on-delete-surrounding yield ]
|
||||
im "delete-surrounding" [ on-delete-surrounding ]
|
||||
GtkIMContext:delete-surrounding win connect-signal-with-data
|
||||
|
||||
win "key-press-event" [ im-on-key-event yield ]
|
||||
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 yield ]
|
||||
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 yield ]
|
||||
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 yield ]
|
||||
win "focus-out-event" [ im-on-focus-out ]
|
||||
GtkWidget:focus-out-event im connect-signal-with-data
|
||||
win "destroy" [ im-on-destroy yield ]
|
||||
win "destroy" [ im-on-destroy ]
|
||||
GtkObject:destroy im connect-signal-with-data ;
|
||||
|
||||
! Window controls
|
||||
|
@ -535,6 +535,9 @@ M:: gtk-ui-backend system-alert ( caption text -- )
|
|||
] [ gtk_dialog_run drop ] bi
|
||||
] with-destructors ;
|
||||
|
||||
: <yield-callback> ( -- callback )
|
||||
[ drop yield t ] GSourceFunc ;
|
||||
|
||||
M: gtk-ui-backend (with-ui)
|
||||
[
|
||||
0 gint <ref> f void* <ref> gtk_init
|
||||
|
@ -543,7 +546,12 @@ M: gtk-ui-backend (with-ui)
|
|||
init-clipboard
|
||||
start-ui
|
||||
[
|
||||
[ [ gtk_main ] with-timer ] with-event-loop
|
||||
[
|
||||
[
|
||||
<yield-callback> f g_idle_add drop
|
||||
gtk_main
|
||||
] with-timer
|
||||
] with-event-loop
|
||||
] with-destructors
|
||||
] ui-running ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue