--- src/kernel/qapplication_x11.cpp +++ src/kernel/qapplication_x11.cpp @@ -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); } } --- src/kernel/qwidget_x11.cpp +++ src/kernel/qwidget_x11.cpp @@ -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