diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index ec0f870ca37794a78d5ccec4d5860a1572f6edd6..e02379be3d5433ef70c8fdebddef64c43e6f8150 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -161,9 +161,7 @@ QtSupport::BaseQtVersion *QmlProjectRunConfiguration::qtVersion() const
 
 QWidget *QmlProjectRunConfiguration::createConfigurationWidget()
 {
-    QTC_ASSERT(m_configurationWidget.isNull(), return m_configurationWidget.data());
-    m_configurationWidget = new QmlProjectRunConfigurationWidget(this);
-    return m_configurationWidget.data();
+    return new QmlProjectRunConfigurationWidget(this);
 }
 
 Utils::OutputFormatter *QmlProjectRunConfiguration::createOutputFormatter() const
@@ -218,8 +216,8 @@ void QmlProjectRunConfiguration::setScriptSource(MainScriptSource source,
                 = target()->project()->projectDirectory() + QLatin1Char('/') + m_scriptFile;
     }
     updateEnabled();
-    if (m_configurationWidget)
-        m_configurationWidget.data()->updateFileComboBox();
+
+    emit scriptSourceChanged();
 }
 
 ProjectExplorer::Abi QmlProjectRunConfiguration::abi() const
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
index 489d6c4ac2ca594eac67f8263bccbb95f93445e0..0347732631b5a4fd644373b3390d3484501fc79c 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
@@ -87,6 +87,8 @@ public:
     QVariantMap toMap() const;
 
     ProjectExplorer::Abi abi() const;
+signals:
+    void scriptSourceChanged();
 
 private slots:
     void changeCurrentFile(Core::IEditor* = 0);
@@ -113,8 +115,6 @@ private:
     QString m_scriptFile;
     QString m_qmlViewerArgs;
 
-    QPointer<Internal::QmlProjectRunConfigurationWidget> m_configurationWidget;
-
     bool m_isEnabled;
 };
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
index 8597de9d4288efd9761b56e61add95bb3130aa52..79623f1877541cc3607581f1036dc1ee6a044d92 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.cpp
@@ -84,6 +84,9 @@ QmlProjectRunConfigurationWidget::QmlProjectRunConfigurationWidget(QmlProjectRun
     layout->addWidget(detailsWidget);
 
     updateFileComboBox();
+
+    connect(rc, SIGNAL(scriptSourceChanged()),
+            this, SLOT(updateFileComboBox()));
 }
 
 static bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.h
index b134e86f9a70098eca5ca594e77ea82bafa4b56b..4c6538971690cd8e0058890d5b5b7b6f59d93b99 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationwidget.h
@@ -49,10 +49,8 @@ class QmlProjectRunConfigurationWidget : public QWidget
 public:
     explicit QmlProjectRunConfigurationWidget(QmlProjectRunConfiguration *rc);
 
-public slots:
-    void updateFileComboBox();
-
 private slots:
+    void updateFileComboBox();
     void setMainScript(int index);
     void onViewerArgsChanged();