From 6027c5a0316672cd89b776170c9727ce4bc42005 Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Fri, 16 Apr 2010 16:58:52 +0200
Subject: [PATCH] Avoid build progress' error widget flickering, and popping up
 as toplevel on Mac

When a build was started after a build had errors, the error widget
would be made visible before it had a parent, leading to it being shown
as a top level for a split second.
So, clear the tasks before creating the new error widget, and assume
that we start without errors in the error widget.
---
 src/plugins/projectexplorer/buildmanager.cpp  | 6 +++---
 src/plugins/projectexplorer/buildprogress.cpp | 3 +--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp
index 26aa6313236..ef4a75b8293 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 42b29bef577..6e954d67d8f 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);
 }
-- 
GitLab