diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 9642de569acdb2b2189df1e7928ca7a1996595b1..beb2fbc45e758bb1ddfb90bbc436adefb6f53d2c 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -54,7 +54,7 @@ MakeStep::MakeStep(ProjectExplorer::BuildConfiguration *bc)
 MakeStep::MakeStep(MakeStep *bs, ProjectExplorer::BuildConfiguration *bc)
     : AbstractMakeStep(bs, bc),
     m_clean(bs->m_clean),
-    m_makeargs(bs->m_makeargs),
+    m_userArgs(bs->m_userArgs),
     m_makeCmd(bs->m_makeCmd)
 {
 
@@ -84,7 +84,7 @@ void MakeStep::restoreFromGlobalMap(const QMap<QString, QVariant> &map)
 
 void MakeStep::restoreFromLocalMap(const QMap<QString, QVariant> &map)
 {
-    m_makeargs = map.value("makeargs").toStringList();
+    m_userArgs = map.value("makeargs").toStringList();
     m_makeCmd = map.value("makeCmd").toString();
     if (map.value("clean").isValid() && map.value("clean").toBool())
         m_clean = true;
@@ -93,7 +93,7 @@ void MakeStep::restoreFromLocalMap(const QMap<QString, QVariant> &map)
 
 void MakeStep::storeIntoLocalMap(QMap<QString, QVariant> &map)
 {
-    map["makeargs"] = m_makeargs;
+    map["makeargs"] = m_userArgs;
     map["makeCmd"] = m_makeCmd;
     if (m_clean)
         map["clean"] = true;
@@ -128,7 +128,7 @@ bool MakeStep::init()
     // we should stop the clean queue
     // That is mostly so that rebuild works on a alrady clean project
     setIgnoreReturnValue(m_clean);
-    QStringList args = m_makeargs;
+    QStringList args = m_userArgs;
     if (!m_clean) {
         if (!bc->defaultMakeTarget().isEmpty())
             args << bc->defaultMakeTarget();
@@ -196,19 +196,19 @@ ProjectExplorer::BuildStepConfigWidget *MakeStep::createConfigWidget()
     return new MakeStepConfigWidget(this);
 }
 
-QStringList MakeStep::makeArguments()
+QStringList MakeStep::userArguments()
 {
-    return m_makeargs;
+    return m_userArgs;
 }
 
-void MakeStep::setMakeArguments(const QStringList &arguments)
+void MakeStep::setUserArguments(const QStringList &arguments)
 {
-    m_makeargs = arguments;
-    emit changed();
+    m_userArgs = arguments;
+    emit userArgumentsChanged();
 }
 
 MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep)
-    : BuildStepConfigWidget(), m_makeStep(makeStep)
+    : BuildStepConfigWidget(), m_makeStep(makeStep), m_ignoreChange(false)
 {
     m_ui.setupUi(this);
     connect(m_ui.makeLineEdit, SIGNAL(textEdited(QString)),
@@ -216,8 +216,8 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep)
     connect(m_ui.makeArgumentsLineEdit, SIGNAL(textEdited(QString)),
             this, SLOT(makeArgumentsLineEditTextEdited()));
 
-    connect(makeStep, SIGNAL(changed()),
-            this, SLOT(update()));
+    connect(makeStep, SIGNAL(userArgumentsChanged()),
+            this, SLOT(userArgumentsChanged()));
     connect(makeStep->buildConfiguration(), SIGNAL(buildDirectoryChanged()),
             this, SLOT(updateDetails()));
 
@@ -257,7 +257,7 @@ void MakeStepConfigWidget::updateDetails()
     // FIXME doing this without the user having a way to override this is rather bad
     // so we only do it for unix and if the user didn't override the make command
     // but for now this is the least invasive change
-    QStringList args = m_makeStep->makeArguments();
+    QStringList args = m_makeStep->userArguments();
     ProjectExplorer::ToolChain::ToolChainType t = ProjectExplorer::ToolChain::UNKNOWN;
     ProjectExplorer::ToolChain *toolChain = bc->toolChain();
     if (toolChain)
@@ -281,9 +281,11 @@ QString MakeStepConfigWidget::displayName() const
     return m_makeStep->displayName();
 }
 
-void MakeStepConfigWidget::update()
+void MakeStepConfigWidget::userArgumentsChanged()
 {
-    init();
+    const QStringList &makeArguments = m_makeStep->userArguments();
+    m_ui.makeArgumentsLineEdit->setText(ProjectExplorer::Environment::joinArgumentList(makeArguments));
+    updateDetails();
 }
 
 void MakeStepConfigWidget::init()
@@ -293,7 +295,7 @@ void MakeStepConfigWidget::init()
     const QString &makeCmd = m_makeStep->m_makeCmd;
     m_ui.makeLineEdit->setText(makeCmd);
 
-    const QStringList &makeArguments = m_makeStep->makeArguments();
+    const QStringList &makeArguments = m_makeStep->userArguments();
     m_ui.makeArgumentsLineEdit->setText(ProjectExplorer::Environment::joinArgumentList(makeArguments));
     updateDetails();
 }
@@ -306,8 +308,10 @@ void MakeStepConfigWidget::makeLineEditTextEdited()
 
 void MakeStepConfigWidget::makeArgumentsLineEditTextEdited()
 {
-    m_makeStep->setMakeArguments(
+    m_ignoreChange = true;
+    m_makeStep->setUserArguments(
             ProjectExplorer::Environment::parseCombinedArgString(m_ui.makeArgumentsLineEdit->text()));
+    m_ignoreChange = false;
     updateDetails();
 }
 
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index 8e670fa2f19582f7be06637f940768d22e5f5456..db70e16a0e05be71ec76f407583be35e763769f2 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -80,8 +80,8 @@ public:
     virtual QString displayName();
     virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
     virtual bool immutable() const;
-    QStringList makeArguments();
-    void setMakeArguments(const QStringList &arguments);
+    QStringList userArguments();
+    void setUserArguments(const QStringList &arguments);
 
     virtual void restoreFromGlobalMap(const QMap<QString, QVariant> &map);
 
@@ -91,10 +91,10 @@ public:
     virtual void storeIntoLocalMap(QMap<QString, QVariant> &map);
 
 signals:
-    void changed();
+    void userArgumentsChanged();
 private:
     bool m_clean;
-    QStringList m_makeargs;
+    QStringList m_userArgs;
     QString m_makeCmd;
 };
 
@@ -109,13 +109,14 @@ public:
 private slots:
     void makeLineEditTextEdited();
     void makeArgumentsLineEditTextEdited();
-    void update();
     void updateMakeOverrideLabel();
     void updateDetails();
+    void userArgumentsChanged();
 private:
     Ui::MakeStep m_ui;
     MakeStep *m_makeStep;
     QString m_summaryText;
+    bool m_ignoreChange;
 };
 
 } // Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 32325ec5666386d98bf1302e16cf340bf51d0550..ab5d39075c2546efdf7f77fbb9580bd4f5a92115 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -327,6 +327,8 @@ void QMakeStepConfigWidget::userArgumentsChanged()
         return;
     QString qmakeArgs = ProjectExplorer::Environment::joinArgumentList(m_step->userArguments());
     m_ui.qmakeAdditonalArgumentsLineEdit->setText(qmakeArgs);
+    updateTitleLabel();
+    updateEffectiveQMakeCall();
 }
 
 void QMakeStepConfigWidget::init()
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 9fafc02dd52ebccd1b1ca770a87f8cc664a03ac2..78f830c9b1c108932ad1073b8e6bc9a3d47fde94 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -480,7 +480,7 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString displayName,
 
     // set some options for qmake and make
     if (qmakeBuildConfiguration & QtVersion::BuildAll) // debug_and_release => explicit targets
-        makeStep->setMakeArguments(QStringList() << (debug ? "debug" : "release"));
+        makeStep->setUserArguments(QStringList() << (debug ? "debug" : "release"));
 
     bc->setValue("buildConfiguration", int(qmakeBuildConfiguration));
 
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index fb9ba63807c6070dfb855149e664143945f533ef..13ac7cb6d6c68eba10fc770ebf74555ca18f43f7 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -306,7 +306,7 @@ void Qt4ProjectConfigWidget::importLabelClicked()
             // If we are switching to BuildAll we want "release" in there and no "debug"
             // or "debug" in there and no "release"
             // If we are switching to not BuildAl we want neither "release" nor "debug" in there
-            QStringList makeCmdArguments = makeStep->makeArguments();
+            QStringList makeCmdArguments = makeStep->userArguments();
             bool debug = qmakeBuildConfig & QtVersion::DebugBuild;
             if (qmakeBuildConfig & QtVersion::BuildAll) {
                 makeCmdArguments.removeAll(debug ? "release" : "debug");
@@ -316,7 +316,7 @@ void Qt4ProjectConfigWidget::importLabelClicked()
                 makeCmdArguments.removeAll("debug");
                 makeCmdArguments.removeAll("release");
             }
-            makeStep->setMakeArguments(makeCmdArguments);
+            makeStep->setUserArguments(makeCmdArguments);
         }
     }
     setupQtVersionsComboBox();