summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qapplication.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2009-04-01 15:09:48 (GMT)
committerSimon Hausmann <simon.hausmann@nokia.com>2009-04-01 15:09:48 (GMT)
commitb92516d571eb608e0bb273f0871eeeaf20671b9d (patch)
tree5a711dd58ff0e9abe4523e893340676fe17bdc62 /src/gui/kernel/qapplication.cpp
parent815eb0e1d05318dfdd3cadb7f45c7e8e80ff4790 (diff)
parentef46fa38e50b807c6122dc37d84d2944069ef3ea (diff)
downloadQt-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.cpp10
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);