--- qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp.orig 2006-06-20 15:45:44.000000000 +0200 +++ qt-x11-free-3.3.6/src/kernel/qapplication_x11.cpp 2006-06-20 15:51:13.000000000 +0200 @@ -3294,11 +3294,7 @@ // filtering opportunity first to ensure all input methods work // properly regardless of application design. -#ifndef QT_NO_IM_EXTENSIONS if( keywidget && keywidget->isEnabled() && keywidget->isInputMethodEnabled() ) { -#else - if( keywidget && keywidget->isEnabled() ) { -#endif if( ( event->type==XKeyPress || event->type==XKeyRelease ) && sm_blockUserInput ) // block user interaction during session management return TRUE; @@ -5220,11 +5216,12 @@ } else { key = (int)(long)keyDict->find( keycode ); if ( key ) - if( !willRepeat ) // Take out key of dictionary only if this call. + if( !willRepeat && statefulTranslation ) // Take out key of dictionary only if this call. keyDict->take( keycode ); long s = (long)textDict->find( keycode ); if ( s ) { - textDict->take( keycode ); + if( statefulTranslation ) + textDict->take( keycode ); ascii = (char)(s-256); } } --- qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp.orig 2006-06-20 15:46:49.000000000 +0200 +++ qt-x11-free-3.3.6/src/kernel/qwidget_x11.cpp 2006-06-20 15:48:14.000000000 +0200 @@ -2699,11 +2699,10 @@ { QInputContext *qic = 0; -#if !defined(QT_NO_IM_EXTENSIONS) if ( isInputMethodEnabled() ) { +#if !defined(QT_NO_IM_EXTENSIONS) qic = icHolderWidget()->ic; #else - { // icHolderWidget is always topLevelWidget QTLWExtra *topdata = icHolderWidget()->topData(); qic = (QInputContext *)topdata->xic; @@ -2754,10 +2753,8 @@ */ void QWidget::createInputContext() { -#if !defined(QT_NO_IM_EXTENSIONS) if( !isInputMethodEnabled() || QApplication::closingDown() ) return; -#endif QWidget *icWidget = icHolderWidget(); #ifndef QT_NO_IM