diff options
author | Camil Staps | 2019-10-23 16:22:51 +0200 |
---|---|---|
committer | Camil Staps | 2019-10-23 16:22:51 +0200 |
commit | 0c122b22f003ee3681341573e0b8f366b9f9dec9 (patch) | |
tree | 40d8b02e116998b9fe96cfd1a25440f5fe57b8fc /src/Gtk/Signal.icl | |
parent | Add setRowTitle for GtkSheet (diff) |
Add EnterPressedHandler for GtkSheet
Diffstat (limited to 'src/Gtk/Signal.icl')
-rw-r--r-- | src/Gtk/Signal.icl | 17 |
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] |