diff options
Diffstat (limited to 'src/Gtk')
-rw-r--r-- | src/Gtk/Internal.dcl | 4 | ||||
-rw-r--r-- | src/Gtk/Internal.icl | 12 | ||||
-rw-r--r-- | src/Gtk/Signal.icl | 9 |
3 files changed, 15 insertions, 10 deletions
diff --git a/src/Gtk/Internal.dcl b/src/Gtk/Internal.dcl index 4e4fc96..cff9cbf 100644 --- a/src/Gtk/Internal.dcl +++ b/src/Gtk/Internal.dcl @@ -10,8 +10,8 @@ g_object_unref :: !Pointer !.a -> .a g_signal_connect :: !Int !Pointer !String !Int !.a -> .a -g_timeout_add :: !Int !Int !.a -> .a -g_timeout_add_seconds :: !Int !Int !.a -> .a +g_timeout_add :: !Int !Pointer !Int !.a -> .a +g_timeout_add_seconds :: !Int !Pointer !Int !.a -> .a gtk_accel_group_new :: !.a -> (!Pointer, !.a) diff --git a/src/Gtk/Internal.icl b/src/Gtk/Internal.icl index 987ae85..c76f01a 100644 --- a/src/Gtk/Internal.icl +++ b/src/Gtk/Internal.icl @@ -26,14 +26,14 @@ where ccall clean_g_signal_connect "IpsI:V:A" } -g_timeout_add :: !Int !Int !.a -> .a -g_timeout_add interval id env = code { - ccall clean_g_timeout_add "II:V:A" +g_timeout_add :: !Int !Pointer !Int !.a -> .a +g_timeout_add interval address id env = code { + ccall g_timeout_add "IpI:V:A" } -g_timeout_add_seconds :: !Int !Int !.a -> .a -g_timeout_add_seconds interval id env = code { - ccall clean_g_timeout_add_seconds "II:V:A" +g_timeout_add_seconds :: !Int !Pointer !Int !.a -> .a +g_timeout_add_seconds interval address id env = code { + ccall g_timeout_add_seconds "IpI:V:A" } gtk_accel_group_new :: !.a -> (!Pointer, !.a) diff --git a/src/Gtk/Signal.icl b/src/Gtk/Signal.icl index 94d6ecd..3ed3bca 100644 --- a/src/Gtk/Signal.icl +++ b/src/Gtk/Signal.icl @@ -132,8 +132,8 @@ addTimeout interval callback = , timeout_counter = id }) >>= \{timeout_counter=id} -> case interval of - Milliseconds ms -> toState (g_timeout_add ms id) - Seconds s -> toState (g_timeout_add_seconds s id) + Milliseconds ms -> toState (g_timeout_add ms get_handleTimeout_address id) + Seconds s -> toState (g_timeout_add_seconds s get_handleTimeout_address id) where wrapped_callback id = callback >>= \r -> @@ -142,6 +142,11 @@ where (modState \st -> {st & timeouts='Data.Map'.del id st.timeouts}) >>| pure r + get_handleTimeout_address :: Pointer + get_handleTimeout_address = code { + pushLc handleTimeout + } + foreign export handleTimeout handleTimeout :: !Int -> Int handleTimeout id |