[immodule-qt] Re: [SCIM] scim-qtimm 0.7 released
Zhe Su
james.su at gmail.com
Mon Sep 6 11:53:42 EEST 2004
Hi,
This new code will cause segfault on my box when trying
scim-qtimm/tests/edittest.
Regards
James Su
On Mon, 6 Sep 2004 15:39:23 +0900, Kazuki Ohta <mover at hct.zaq.ne.jp> wrote:
> Hi, Cougar.
>
> More refactored version is here.
> This code is based on the code of QApplication::notify.
> I think this code is more cleaner.
>
> void QApplication::postIMEvent( QObject *receiver, QIMEvent *event )
> {
> if( event->type() == QEvent::IMCompose )
> postEvent( receiver, event );
> else {
> if (receiver->postedEvents) {
> //get rid of IMCompose event posted before
> QPostEventList * l = receiver->postedEvents;
> QPostEvent * pe;
> l->first();
> while( ( pe = l->current()) != 0 ) {
> if ( pe->event && pe->receiver == receiver &&
> pe->event->type() == QEvent::IMCompose ) {
> pe->event->posted = FALSE;
> delete pe->event;
> pe->event = 0;
> l->remove();
> continue;
> }
> l->next();
> }
> sendEvent( receiver, event );
> delete event;
>
>
> }
> }
> }
>
> On Monday 06 September 2004 12:34, LiuCougar wrote:
> > On Mon, 6 Sep 2004 11:27:26 +0800, Zhe Su <james.su at gmail.com> wrote:
> > > Hi,
> > > I just read though this new code, and found that there is no exit
> > > point in the for (;;) {...} loop. Is it correct?
> >
> > Oops, sorry about that, the rectified version is:
> > void QApplication::postIMEvent( QObject *receiver, QIMEvent *event )
> > {
> > if( event->type() == QEvent::IMCompose )
> > postEvent( receiver, event );
> > else {
> > QPostEventList * l = receiver->postedEvents;
> >
> > //get rid of IMCompose event posted before
> > if ( event->type() == QEvent::IMCompose ) {
> > l->first();
> > QPostEvent * cur = 0;
> > for ( ;; ) {
> > while ( (cur=l->current()) != 0 &&
> > ( cur->receiver != receiver ||
> > cur->event == 0 ||
> > cur->event->type() != event->type() ) )
> > l->next();
> > if ( l->current() != 0 ) {
> > if ( cur->event->type() == QEvent::IMCompose ) {
> > delete cur->event;
> > l->remove(cur);
> > }
> > } else
> > break;
> > }
> > }
> > sendEvent( receiver, event );
> > delete event;
> > }
> > }
> >
> > Thanks for correcting me ;)
> >
> > Regards,
>
> --
> ---------------------------------
> Move the worl:D!
> Kazuki Ohta : mover at hct.zaq.ne.jp
>
>
> _______________________________________________
> immodule-qt mailing list
> immodule-qt at freedesktop.org
> http://freedesktop.org/mailman/listinfo/immodule-qt
>
More information about the immodule-qt
mailing list