Perfect! On Apr 3, 2010, at 18:12, Andy Stewart wrote:
> 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® 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® 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® 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® 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® 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