Andy,

I don't think you should use connectGeneric since this -- I think --  
only works with one particular way of connecting to signals. Please  
copy the code from the onInsertText signal. In general, you should  
only use the automatically generated connect_XXX functions.

Axel.

On Apr 3, 2010, at 9:03, Andy Stewart wrote:

> Hi Matt,
>
> Sorry for inconvenience!
>
> I have fix this bug in darcs version with below code:
>
> ------------------------------> new version start  
> <------------------------------
> insertText :: EditableClass self => Signal self (String -> Int ->  
> IO Int)
> insertText = Signal (connect_STRINGPTR_INT__INTPTR "insert-text")
>
> -- | Singal helper functions.
> connect_STRINGPTR_INT__INTPTR ::
>     EditableClass self => SignalName ->
>     ConnectAfter -> self ->
>     (String -> Int -> IO Int) ->
>     IO (ConnectId self)
> connect_STRINGPTR_INT__INTPTR signal after obj user =
>     connectGeneric signal after obj
>        (\strPtr strLen posPtr -> do
>           str <- if strLen<0 then peekUTFString strPtr
>               else peekUTFStringLen (strPtr, strLen)
>           pos <- peek (posPtr :: Ptr {#type gint#})
>           pos' <- user str (fromIntegral pos)
>           poke (posPtr :: Ptr {#type gint#}) (fromIntegral pos'))
> ------------------------------> new version end    
> <------------------------------
>
> Thanks for your report!
>
>   -- Andy
>
> Matt Arsenault <arse...@rpi.edu> writes:
>
>> 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&#174; 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
>
>
> ---------------------------------------------------------------------- 
> --------
> Download Intel&#174; 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
> Gtk2hs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel


------------------------------------------------------------------------------
Download Intel&#174; 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
Gtk2hs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel

Reply via email to