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.icl11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/Gtk/Signal.icl b/src/Gtk/Signal.icl
index 5861e92..119829a 100644
--- a/src/Gtk/Signal.icl
+++ b/src/Gtk/Signal.icl
@@ -3,22 +3,19 @@ implementation module Gtk.Signal
import StdEnv
import Control.Monad
-import Control.Monad.Identity
-import Control.Monad.State
import qualified Data.Map
+import Gtk
import Gtk.Internal
-import Gtk.State
-import Gtk.Widgets
-installSignalHandler :: !GSignalHandler !w -> State GtkState w | gtkWidget w
+installSignalHandler :: !GSignalHandler !w -> GtkM w | gtkWidget w
installSignalHandler handler widget =
- modify (\st ->
+ modState (\st ->
{ st
& signal_handlers = 'Data.Map'.put (st.signal_counter+1) handler_internal st.signal_handlers
, signal_counter = st.signal_counter+1
}) >>|
- gets (\st -> st.signal_counter) >>= \id ->
+ getState >>= \{signal_counter=id} ->
(toState case handler_internal of
GSHI_Void _ -> g_signal_connect_void (toPtr (gtkWidget widget)) signal_name id) >>|
pure widget