Hi,
I happened to come across a problem with the insertText signal for
Editable in Gtk.
I'm having problems getting the autotools to actually build, so I
haven't exactly fixed it myself.
In gtk/Graphics/UI/Gtk/Entry/Editable.chs.pp:
> insertText :: EditableClass self => Signal self (String -> Int -> Int
-> IO ())
> insertText = Signal (connect_STRING_INT_INT__NONE "insert-text")
However, this is wrong. This doesn't match what the
onInsertText/afterInsertText do, and what the callback is supposed to
be.
The C callback is supposed to be
(GtkEditable *editable,
gchar *new_text,
gint new_text_length,
gint *position,
gpointer user_data)
Where the position argument is an in and out argument which is kind of
weird. onInsertText/afterInsertText handle this, but insertText does
not. insertText will just treat a pointer as an int, and doesn't respect
the out argument aspect at all.
onInsertText:
> onInsertText, afterInsertText :: EditableClass self => self
> -> (String -> Int -> IO Int)
> -> IO (ConnectId self)
> onInsertText obj handler =
> connect_PTR_INT_PTR__NONE "insert_text" False obj
> (\strPtr strLen posPtr -> do
> str <- if strLen<0 then peekUTFString strPtr
> else peekUTFStringLen (strPtr, strLen)
> pos <- peek (posPtr :: Ptr {#type gint#})
> pos' <- handler str (fromIntegral pos)
> poke (posPtr :: Ptr {#type gint#}) (fromIntegral pos')
> )
This should be something more like this, except I haven't actually
tested it since I gave up on trying to get current darcs gtk2hs built
and didn't have time to fight with it.
> insertText :: EditableClass self => Signal self (String -> Int -> IO
Int)
> insertText = Signal $
> connect_PTR_INT_PTR__NONE "insert_text"
> (\strPtr strLen posPtr -> do
> str <- if strLen<0 then peekUTFString strPtr
> else peekUTFStringLen (strPtr, strLen)
> pos <- peek (posPtr :: Ptr {#type gint#})
> pos' <- handler str (fromIntegral pos)
> poke (posPtr :: Ptr {#type gint#}) (fromIntegral pos')
> )
- Matt Arsenault
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Gtk2hs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel