diff --git a/src/plugins/valgrind/callgrindcostview.h b/src/plugins/valgrind/callgrindcostview.h
index d3ddcf76360f71bd63deaa1acb5b456b3f730339..6dd04505cd27304d4cd710b65b1a43b76b2d075f 100644
--- a/src/plugins/valgrind/callgrindcostview.h
+++ b/src/plugins/valgrind/callgrindcostview.h
@@ -33,10 +33,10 @@
 #ifndef CALLGRINDCOSTVIEW_H
 #define CALLGRINDCOSTVIEW_H
 
-#include <QtGui/QTreeView>
-
 #include "callgrindcostdelegate.h"
 
+#include <QtGui/QTreeView>
+
 namespace Valgrind {
 namespace Internal {
 
@@ -46,13 +46,13 @@ class CostView : public QTreeView
 
 public:
     explicit CostView(QWidget *parent = 0);
-    virtual ~CostView();
+    ~CostView();
 
     /**
      * Overload automatically updates the cost delegate
      * and sets it for the cost columns of DataModel and CallModel.
      */
-    virtual void setModel(QAbstractItemModel *model);
+    void setModel(QAbstractItemModel *model);
 
     /**
      * How to format cost data columns in the view.
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index 8f12f24df5d43aa82b7da9c2f9352b03546deafe..904e1da33257adc0401fa79eebcbe54f7aeccfca 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -156,7 +156,7 @@ public slots:
     void stackBrowserChanged();
 
     /// If \param busy is true, all widgets get a busy cursor when hovered
-    void setBusy(bool busy);
+    void setBusyCursor(bool busy);
 
     void dataFunctionSelected(const QModelIndex &index);
     void calleeFunctionSelected(const QModelIndex &index);
@@ -285,7 +285,7 @@ void CallgrindToolPrivate::doClear(bool clearParseData)
     m_proxyModel->setFilterFixedString(QString());
 }
 
-void CallgrindToolPrivate::setBusy(bool busy)
+void CallgrindToolPrivate::setBusyCursor(bool busy)
 {
     QCursor cursor(busy ? Qt::BusyCursor : Qt::ArrowCursor);
     m_flatView->setCursor(cursor);
@@ -468,7 +468,7 @@ void CallgrindToolPrivate::setParseData(ParseData *data)
     m_stackBrowser->clear();
 
     // unset busy state
-    setBusy(false);
+    //setBusy(false);
 }
 
 void CallgrindToolPrivate::updateEventCombo()
@@ -614,6 +614,7 @@ IAnalyzerEngine *CallgrindToolPrivate::createEngine(const AnalyzerStartParameter
 void CallgrindTool::startTool(StartMode mode)
 {
     ValgrindPlugin::startValgrindTool(this, mode);
+    d->setBusyCursor(true);
 }
 
 QWidget *CallgrindTool::createWidgets()
@@ -863,6 +864,8 @@ void CallgrindToolPrivate::engineFinished()
         showParserResults(data);
     else
         AnalyzerManager::showStatusMessage(tr("Profiling aborted."));
+
+    setBusyCursor(false);
 }
 
 void CallgrindToolPrivate::showParserResults(const ParseData *data)
@@ -944,7 +947,7 @@ void CallgrindToolPrivate::handleShowCostsOfFunction()
 
 void CallgrindToolPrivate::slotRequestDump()
 {
-    setBusy(true);
+    //setBusy(true);
     m_visualisation->setText(tr("Populating..."));
     dumpRequested();
 }
diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp
index 0bbc6e6521a79ecdae452c79aadbf0f95906ea8c..6f836a89d2fae9b62ffe041d39858d8e994eda3e 100644
--- a/src/plugins/valgrind/memchecktool.cpp
+++ b/src/plugins/valgrind/memchecktool.cpp
@@ -465,6 +465,7 @@ void MemcheckTool::startTool(StartMode mode)
 
 void MemcheckTool::engineStarting(const IAnalyzerEngine *engine)
 {
+    setBusyCursor(true);
     clearErrorView();
 
     QString dir;
@@ -548,6 +549,13 @@ void MemcheckTool::finished()
     m_goNext->setEnabled(n > 1);
     const QString msg = AnalyzerManager::msgToolFinished(displayName(), n);
     AnalyzerManager::showStatusMessage(msg);
+    setBusyCursor(false);
+}
+
+void MemcheckTool::setBusyCursor(bool busy)
+{
+    QCursor cursor(busy ? Qt::BusyCursor : Qt::ArrowCursor);
+    m_errorView->setCursor(cursor);
 }
 
 } // namespace Internal
diff --git a/src/plugins/valgrind/memchecktool.h b/src/plugins/valgrind/memchecktool.h
index 5a1dc3fc600da3b3f457f6d12c9d40afd8e5716e..f808e3bc6284016c0e45a40b68470e2dba086809 100644
--- a/src/plugins/valgrind/memchecktool.h
+++ b/src/plugins/valgrind/memchecktool.h
@@ -113,6 +113,7 @@ private:
     ToolMode toolMode() const;
     void extensionsInitialized() {}
     QWidget *createWidgets();
+    void setBusyCursor(bool busy);
 
     Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp,
                                ProjectExplorer::RunConfiguration *runConfiguration = 0);