summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Dzyubenko <denis.dzyubenko@nokia.com>2010-01-05 12:42:49 (GMT)
committerJesper Thomschutz <jesper.thomschutz@nokia.com>2010-01-13 09:23:54 (GMT)
commit7a8ee6b2f3c9c7cc6a2833ea332a3e35a4958f6e (patch)
treeb7b24dab784ec357f73fbb91fd515d69dc38ccd2
parent3a297b96bf69fbd238b9e8fb773036225513efc9 (diff)
downloadQt-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.cpp2
-rw-r--r--src/gui/kernel/qwidget_x11.cpp2
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);
}