diff options
author | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2010-01-05 12:42:49 (GMT) |
---|---|---|
committer | Jesper Thomschutz <jesper.thomschutz@nokia.com> | 2010-01-13 09:23:54 (GMT) |
commit | 7a8ee6b2f3c9c7cc6a2833ea332a3e35a4958f6e (patch) | |
tree | b7b24dab784ec357f73fbb91fd515d69dc38ccd2 | |
parent | 3a297b96bf69fbd238b9e8fb773036225513efc9 (diff) | |
download | Qt-7a8ee6b2f3c9c7cc6a2833ea332a3e35a4958f6e.zip Qt-7a8ee6b2f3c9c7cc6a2833ea332a3e35a4958f6e.tar.gz Qt-7a8ee6b2f3c9c7cc6a2833ea332a3e35a4958f6e.tar.bz2 |
Prevent a crash when creating an inputContext from the QApplication dtor.
When accessing the global input context from the QWidget destructor access it
directly instead of calling a helper function. Don't even bother to create an
input context if QApplication is being destroyed (just in case if the user is
calling the QApplication::inputContext manually from the destructor).
Task-number: QTBUG-7105
Reviewed-by: Simon Hausmann
(cherry picked from commit f72165460d27860cabd51691f4d935fd74b50f80)
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qwidget_x11.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index d474391..df36466 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -5230,6 +5230,8 @@ QInputContext *QApplication::inputContext() const { Q_D(const QApplication); Q_UNUSED(d);// only static members being used. + if (QApplicationPrivate::is_app_closing) + return d->inputContext; #ifdef Q_WS_X11 if (!X11) return 0; diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp index 3135ece..87c9885 100644 --- a/src/gui/kernel/qwidget_x11.cpp +++ b/src/gui/kernel/qwidget_x11.cpp @@ -1084,7 +1084,7 @@ void QWidget::destroy(bool destroyWindow, bool destroySubWindows) } else { // release previous focus information participating with // preedit preservation of qic - QInputContext *qic = inputContext(); + QInputContext *qic = QApplicationPrivate::inputContext; if (qic) qic->widgetDestroyed(this); } |