diff options
Diffstat (limited to 'src/Gtk')
-rw-r--r-- | src/Gtk/Signal.dcl | 1 | ||||
-rw-r--r-- | src/Gtk/Signal.icl | 7 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Signal.dcl | 3 | ||||
-rw-r--r-- | src/Gtk/Widgets/Sheet/Signal.icl | 2 |
4 files changed, 10 insertions, 3 deletions
diff --git a/src/Gtk/Signal.dcl b/src/Gtk/Signal.dcl index 692bf05..b082e02 100644 --- a/src/Gtk/Signal.dcl +++ b/src/Gtk/Signal.dcl @@ -23,6 +23,7 @@ instance signalHandler GSignalHandler :: SignalHandlerInternal = SHI_Void !(GtkM ()) | SHI_Pointer_Bool !(Pointer -> GtkM Bool) + | SHI_Int_Int_Bool !(Int Int -> GtkM Bool) | SHI_Int_Int_Pointer_Pointer_Bool !(Int Int Pointer Pointer -> GtkM Bool) installSignalHandler :: !h !w -> GtkM w | signalHandler h & gtkWidget w diff --git a/src/Gtk/Signal.icl b/src/Gtk/Signal.icl index 64a244e..56126f8 100644 --- a/src/Gtk/Signal.icl +++ b/src/Gtk/Signal.icl @@ -38,8 +38,9 @@ installSignalHandler handler widget = where type handler = case handler of SHI_Void _ -> 1 - SHI_Pointer_Bool _ -> 2 - SHI_Int_Int_Pointer_Pointer_Bool _ -> 3 + SHI_Int_Int_Bool _ -> 2 + SHI_Pointer_Bool _ -> 3 + SHI_Int_Int_Pointer_Pointer_Bool _ -> 4 instance tune w SignalHandler | gtkWidget w where @@ -95,6 +96,8 @@ runSignalHandler :: !SignalHandlerInternal !{#Int} -> GtkM Int runSignalHandler handler args = case handler of SHI_Void f -> toInt <$> f + SHI_Int_Int_Bool f + -> toInt <$> f args.[0] args.[1] SHI_Pointer_Bool f -> toInt <$> f args.[0] SHI_Int_Int_Pointer_Pointer_Bool f diff --git a/src/Gtk/Widgets/Sheet/Signal.dcl b/src/Gtk/Widgets/Sheet/Signal.dcl index ad14d5a..39f77b0 100644 --- a/src/Gtk/Widgets/Sheet/Signal.dcl +++ b/src/Gtk/Widgets/Sheet/Signal.dcl @@ -6,7 +6,8 @@ from Gtk.Signal import class signalHandler, :: SignalHandlerInternal from Gtk.State import :: GtkM :: GtkSheetSignalHandler - = EnterPressedHandler !(GtkM Bool) + = DeactivateHandler !(Int Int -> GtkM Bool) + | EnterPressedHandler !(GtkM Bool) | TraverseHandler !((Maybe (Int,Int)) (Int,Int) -> GtkM (Maybe (Int, Int))) instance signalHandler GtkSheetSignalHandler diff --git a/src/Gtk/Widgets/Sheet/Signal.icl b/src/Gtk/Widgets/Sheet/Signal.icl index 6db3b6b..8cfa10f 100644 --- a/src/Gtk/Widgets/Sheet/Signal.icl +++ b/src/Gtk/Widgets/Sheet/Signal.icl @@ -12,9 +12,11 @@ import Gtk instance signalHandler GtkSheetSignalHandler where signalName handler = case handler of + DeactivateHandler _ -> "deactivate" EnterPressedHandler _ -> "enter-pressed" TraverseHandler _ -> "traverse" signalHandler handler = case handler of + DeactivateHandler f -> SHI_Int_Int_Bool f EnterPressedHandler f -> SHI_Pointer_Bool \_ -> not <$> f TraverseHandler f -> SHI_Int_Int_Pointer_Pointer_Bool \oldrow oldcol newrowp newcolp -> let newrow = readInt4S newrowp 0; newcol = readInt4S newcolp 0 in |