From 005b0a9a689cb15441d7bb2f021b54ba42577070 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Tue, 23 Jun 2009 14:59:01 +0200 Subject: [PATCH] Fix exit crash when having context help open. Add a shutdown()-notification to MainWindow and reset the context in it. Task-number: 256386 Reviewed-by: con <qtc-committer@nokia.com> --- src/plugins/coreplugin/coreplugin.cpp | 5 +++++ src/plugins/coreplugin/coreplugin.h | 5 +++-- src/plugins/coreplugin/mainwindow.cpp | 7 +++++++ src/plugins/coreplugin/mainwindow.h | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 5012493812b..7d912a4578f 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -96,4 +96,9 @@ void CorePlugin::remoteArgument(const QString& arg) } } +void CorePlugin::shutdown() +{ + m_mainWindow->shutdown(); +} + Q_EXPORT_PLUGIN(CorePlugin) diff --git a/src/plugins/coreplugin/coreplugin.h b/src/plugins/coreplugin/coreplugin.h index 1d12c14ec39..4580dd6fd0e 100644 --- a/src/plugins/coreplugin/coreplugin.h +++ b/src/plugins/coreplugin/coreplugin.h @@ -47,8 +47,9 @@ public: CorePlugin(); ~CorePlugin(); - bool initialize(const QStringList &arguments, QString *errorMessage = 0); - void extensionsInitialized(); + virtual bool initialize(const QStringList &arguments, QString *errorMessage = 0); + virtual void extensionsInitialized(); + virtual void shutdown(); public slots: void remoteArgument(const QString&); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index aaec0076ae6..66b84c85f92 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -1081,6 +1081,13 @@ void MainWindow::resetContext() updateContextObject(0); } +void MainWindow::shutdown() +{ + disconnect(QApplication::instance(), SIGNAL(focusChanged(QWidget*,QWidget*)), + this, SLOT(updateFocusWidget(QWidget*,QWidget*))); + m_activeContext = 0; +} + static const char *settingsGroup = "MainWindow"; static const char *geometryKey = "Geometry"; static const char *colorKey = "Color"; diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 13e980d4824..c0aa8494a70 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -89,6 +89,7 @@ public: bool init(QString *errorMessage); void extensionsInitialized(); + void shutdown(); IContext *contextObject(QWidget *widget); void addContextObject(IContext *contex); -- GitLab