From 164ec20b9ed3cfd1c1c705032902330b56b33850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com> Date: Mon, 2 Feb 2009 12:14:59 +0100 Subject: [PATCH] Fixed crash on applying or changing settings The m_page member used to access the widgets was deleted too early. Deletion moved to finish() method. --- src/plugins/coreplugin/dialogs/shortcutsettings.cpp | 4 ++-- src/plugins/coreplugin/generalsettings.cpp | 7 ++++++- src/plugins/coreplugin/generalsettings.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 6797a50888e..33d83f67efb 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -116,8 +116,6 @@ QWidget *ShortcutSettings::createPage(QWidget *parent) commandChanged(0); - delete m_page; - return w; } @@ -131,6 +129,8 @@ void ShortcutSettings::finish() { qDeleteAll(m_scitems); m_scitems.clear(); + + delete m_page; } bool ShortcutSettings::eventFilter(QObject *o, QEvent *e) diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index b21db43fa35..f2b51c1204c 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -77,7 +77,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent) this, SLOT(resetExternalEditor())); connect(m_page->helpExternalEditorButton, SIGNAL(clicked()), this, SLOT(showHelpForExternalEditor())); - delete m_page; + return w; } @@ -88,6 +88,11 @@ void GeneralSettings::apply() EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text()); } +void GeneralSettings::finish() +{ + delete m_page; +} + void GeneralSettings::resetInterfaceColor() { m_page->colorButton->setColor(0x666666); diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h index aff4d0c8809..f31edf2cfb4 100644 --- a/src/plugins/coreplugin/generalsettings.h +++ b/src/plugins/coreplugin/generalsettings.h @@ -56,7 +56,7 @@ public: QString trCategory() const; QWidget* createPage(QWidget *parent); void apply(); - void finish() { } + void finish(); private slots: void resetInterfaceColor(); -- GitLab