diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
index 6797a50888ee80aa96e173a41adad1273914a5fe..33d83f67efbd68ee25fa8ccbedce858b995fba22 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 b21db43fa356cbf49a50ebca568c909bb21ad18e..f2b51c1204ca568dff7680c832e3868a4275e203 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 aff4d0c8809bc130d52e906ce89652e1c9551b31..f31edf2cfb46f462642870c3cde82a7a7de6371d 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();