From 64fee9c5cb7f067880e0618c29e6ab5c479aebdf Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Mon, 4 Apr 2011 15:56:34 +0200
Subject: [PATCH] QmlProfiler: Enable attach action only if profiler is current
 tool

---
 src/plugins/analyzerbase/analyzermanager.cpp | 2 ++
 src/plugins/analyzerbase/analyzermanager.h   | 3 +++
 src/plugins/qmlprofiler/qmlprofilertool.cpp  | 8 ++++++++
 3 files changed, 13 insertions(+)

diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp
index 7bda3560c43..00453b5b077 100644
--- a/src/plugins/analyzerbase/analyzermanager.cpp
+++ b/src/plugins/analyzerbase/analyzermanager.cpp
@@ -677,6 +677,8 @@ void AnalyzerManager::toolSelected(int idx)
     updateRunActions();
 
     selectingTool = false;
+
+    emit currentToolChanged(newTool);
 }
 
 void AnalyzerManager::toolSelected(QAction *action)
diff --git a/src/plugins/analyzerbase/analyzermanager.h b/src/plugins/analyzerbase/analyzermanager.h
index 704501e8bdf..2506d63ead7 100644
--- a/src/plugins/analyzerbase/analyzermanager.h
+++ b/src/plugins/analyzerbase/analyzermanager.h
@@ -121,6 +121,9 @@ private slots:
     void loadToolSettings(Analyzer::IAnalyzerTool *tool);
     void updateRunActions();
 
+signals:
+    void currentToolChanged(Analyzer::IAnalyzerTool *tool);
+
 private:
     class AnalyzerManagerPrivate;
     friend class AnalyzerManagerPrivate;
diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index 3a4b858baf6..5c934212235 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -204,6 +204,11 @@ void QmlProfilerTool::initialize(ExtensionSystem::IPlugin */*plugin*/)
     command->setAttribute(Core::Command::CA_UpdateText);
     manalyzer->addAction(command, Analyzer::Constants::G_ANALYZER_STARTSTOP);
     connect(d->m_attachAction, SIGNAL(triggered()), this, SLOT(attach()));
+
+    Analyzer::AnalyzerManager *analyzerMgr = Analyzer::AnalyzerManager::instance();
+    connect(analyzerMgr, SIGNAL(currentToolChanged(Analyzer::IAnalyzerTool*)),
+            this, SLOT(updateAttachAction()));
+
     updateAttachAction();
 }
 
@@ -344,4 +349,7 @@ void QmlProfilerTool::updateAttachAction()
             d->m_attachAction->setText(tr("Attach..."));
         }
     }
+
+    d->m_attachAction->setEnabled(Analyzer::AnalyzerManager::instance()->currentTool() == this);
 }
+
-- 
GitLab