Axel Simon <axel.si...@in.tum.de> writes:

> 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.
Below code is okay?

------------------------------> new version start 
<------------------------------
insertText :: EditableClass self => Signal self (String -> Int -> IO Int)
insertText = Signal (\after obj user -> connect_PTR_INT_PTR__NONE "insert-text" 
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   
<------------------------------

  -- Andy

>
> 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


------------------------------------------------------------------------------
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