diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2009-04-01 15:09:48 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-04-01 15:09:48 (GMT) |
commit | b92516d571eb608e0bb273f0871eeeaf20671b9d (patch) | |
tree | 5a711dd58ff0e9abe4523e893340676fe17bdc62 /src/gui/kernel/qapplication.cpp | |
parent | 815eb0e1d05318dfdd3cadb7f45c7e8e80ff4790 (diff) | |
parent | ef46fa38e50b807c6122dc37d84d2944069ef3ea (diff) | |
download | Qt-b92516d571eb608e0bb273f0871eeeaf20671b9d.zip Qt-b92516d571eb608e0bb273f0871eeeaf20671b9d.tar.gz Qt-b92516d571eb608e0bb273f0871eeeaf20671b9d.tar.bz2 |
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt
Conflicts:
src/gui/inputmethod/qximinputcontext_x11.cpp
Diffstat (limited to 'src/gui/kernel/qapplication.cpp')
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 8ede230..d5a96bd 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -2055,9 +2055,13 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason) QWidget *prev = focus_widget; focus_widget = focus; - if (prev && reason != Qt::PopupFocusReason && reason != Qt::MenuBarFocusReason && - prev->testAttribute(Qt::WA_InputMethodEnabled)) { - QInputContext *qic = prev->inputContext(); + if (prev && ((reason != Qt::PopupFocusReason && reason != Qt::MenuBarFocusReason + && prev->testAttribute(Qt::WA_InputMethodEnabled)) + // Do reset the input context, in case the new focus widget won't accept keyboard input + // or it is not created fully yet. + || (focus_widget && (!focus_widget->testAttribute(Qt::WA_InputMethodEnabled) + || !focus_widget->testAttribute(Qt::WA_WState_Created))))) { + QInputContext *qic = prev->inputContext(); if(qic) { qic->reset(); qic->setFocusWidget(0); |