summaryrefslogtreecommitdiff
path: root/src/Gtk/Signal.icl
diff options
context:
space:
mode:
authorCamil Staps2019-10-23 16:22:51 +0200
committerCamil Staps2019-10-23 16:22:51 +0200
commit0c122b22f003ee3681341573e0b8f366b9f9dec9 (patch)
tree40d8b02e116998b9fe96cfd1a25440f5fe57b8fc /src/Gtk/Signal.icl
parentAdd setRowTitle for GtkSheet (diff)
Add EnterPressedHandler for GtkSheet
Diffstat (limited to 'src/Gtk/Signal.icl')
-rw-r--r--src/Gtk/Signal.icl17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/Gtk/Signal.icl b/src/Gtk/Signal.icl
index 040d6f7..55aca6d 100644
--- a/src/Gtk/Signal.icl
+++ b/src/Gtk/Signal.icl
@@ -29,12 +29,17 @@ installSignalHandler handler widget =
, signal_counter = st.signal_counter+1
}) >>|
getState >>= \{signal_counter=id} ->
- (toState case handler_internal of
- SHI_Void _
- -> g_signal_connect 1 (toPtr (gtkWidget widget)) (signalName handler) id
- SHI_Int_Int_Pointer_Pointer_Bool _
- -> g_signal_connect 2 (toPtr (gtkWidget widget)) (signalName handler) id) >>|
+ toState (g_signal_connect
+ (type handler_internal)
+ (toPtr (gtkWidget widget))
+ (signalName handler)
+ id) >>|
pure widget
+where
+ type handler = case handler of
+ SHI_Void _ -> 1
+ SHI_Pointer_Bool _ -> 2
+ SHI_Int_Int_Pointer_Pointer_Bool _ -> 3
instance tune w SignalHandler | gtkWidget w
where
@@ -83,6 +88,8 @@ runSignalHandler :: !SignalHandlerInternal !{#Int} -> GtkM Int
runSignalHandler handler args = case handler of
SHI_Void f
-> toInt <$> f
+ SHI_Pointer_Bool f
+ -> toInt <$> f args.[0]
SHI_Int_Int_Pointer_Pointer_Bool f
-> toInt <$> f args.[0] args.[1] args.[2] args.[3]