summaryrefslogtreecommitdiff
path: root/src/Gtk/Signal.icl
diff options
context:
space:
mode:
Diffstat (limited to 'src/Gtk/Signal.icl')
-rw-r--r--src/Gtk/Signal.icl3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/Gtk/Signal.icl b/src/Gtk/Signal.icl
index 6780ae9..154fd30 100644
--- a/src/Gtk/Signal.icl
+++ b/src/Gtk/Signal.icl
@@ -76,6 +76,9 @@ saveState = getState >>= \state -> toState (save_state state)
retrieveState :: GtkM GtkState
retrieveState = modState (const saved_state.[0])
+withPossibleCallback :: !(GtkM a) -> GtkM a
+withPossibleCallback m = saveState >>| m >>= \r -> retrieveState >>| pure r
+
foreign export handleSignal
handleSignal :: !Int !{#Int} -> Int
handleSignal id args