diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp
index 26aa6313236f9204ac6f96687965021a08455074..ef4a75b8293d7f8e32adcded77537f3a7ca04758 100644
--- a/src/plugins/projectexplorer/buildmanager.cpp
+++ b/src/plugins/projectexplorer/buildmanager.cpp
@@ -244,6 +244,9 @@ void BuildManager::startBuildQueue()
         Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager();
         m_progressFutureInterface = new QFutureInterface<void>;
         m_progressWatcher.setFuture(m_progressFutureInterface->future());
+        m_outputWindow->clearContents();
+        m_taskWindow->clearTasks(Constants::TASK_CATEGORY_COMPILE);
+        m_taskWindow->clearTasks(Constants::TASK_CATEGORY_BUILDSYSTEM);
         progressManager->setApplicationLabel("");
         Core::FutureProgress *progress = progressManager->addTask(m_progressFutureInterface->future(),
               tr("Build"),
@@ -257,9 +260,6 @@ void BuildManager::startBuildQueue()
         m_running = true;
         m_canceling = false;
         m_progressFutureInterface->reportStarted();
-        m_outputWindow->clearContents();
-        m_taskWindow->clearTasks(Constants::TASK_CATEGORY_COMPILE);
-        m_taskWindow->clearTasks(Constants::TASK_CATEGORY_BUILDSYSTEM);
         nextStep();
     } else {
         // Already running
diff --git a/src/plugins/projectexplorer/buildprogress.cpp b/src/plugins/projectexplorer/buildprogress.cpp
index 42b29bef5773b746c7ed3dce03842d5e9f87941a..6e954d67d8f49e15145740010ee93a6eef2469d1 100644
--- a/src/plugins/projectexplorer/buildprogress.cpp
+++ b/src/plugins/projectexplorer/buildprogress.cpp
@@ -79,7 +79,6 @@ BuildProgress::BuildProgress(TaskWindow *taskWindow)
     hide();
 
     connect(m_taskWindow, SIGNAL(tasksChanged()), this, SLOT(updateState()));
-    updateState();
 }
 
 void BuildProgress::updateState()
@@ -98,9 +97,9 @@ void BuildProgress::updateState()
     m_warningLabel->setText(QString("%1").arg(warnings));
 
     // Hide warnings and errors unless you need them
-    setVisible(haveWarnings | haveErrors);
     m_warningIcon->setVisible(haveWarnings);
     m_warningLabel->setVisible(haveWarnings);
     m_errorIcon->setVisible(haveErrors);
     m_errorLabel->setVisible(haveErrors);
+    setVisible(haveWarnings || haveErrors);
 }