From 25776a3a69b45163c089dab283d1426693601384 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 22 Aug 2012 14:59:54 +0200
Subject: [PATCH] LocalProcessList: Disable the Qt Creator process
 (Regression).

Prevent the user from shooting themselves in the foot.

Change-Id: I67344b02fea5c19aa7f3db5b1c2c611c58e8bbf8
Reviewed-by: hjk <qthjk@ovi.com>
---
 .../devicesupport/localprocesslist.cpp                | 11 +++++++++++
 .../projectexplorer/devicesupport/localprocesslist.h  | 11 ++++++-----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/plugins/projectexplorer/devicesupport/localprocesslist.cpp b/src/plugins/projectexplorer/devicesupport/localprocesslist.cpp
index 7d1d6a26669..0ae819d4581 100644
--- a/src/plugins/projectexplorer/devicesupport/localprocesslist.cpp
+++ b/src/plugins/projectexplorer/devicesupport/localprocesslist.cpp
@@ -40,6 +40,7 @@
 #include <signal.h>
 #include <errno.h>
 #include <string.h>
+#include <unistd.h>
 #endif
 
 #ifdef Q_OS_WIN
@@ -92,6 +93,7 @@ static QString imageName(DWORD processId)
 
 LocalProcessList::LocalProcessList(const IDevice::ConstPtr &device, QObject *parent)
         : DeviceProcessList(device, parent)
+        , m_myPid(GetCurrentProcessId())
 {
 }
 
@@ -135,6 +137,7 @@ void LocalProcessList::doKillProcess(const DeviceProcess &process)
 #ifdef Q_OS_UNIX
 LocalProcessList::LocalProcessList(const IDevice::ConstPtr &device, QObject *parent)
     : DeviceProcessList(device, parent)
+    , m_myPid(getpid())
 {}
 
 static bool isUnixProcessId(const QString &procname)
@@ -241,5 +244,13 @@ void LocalProcessList::reportDelayedKillStatus()
 }
 #endif // QT_OS_UNIX
 
+Qt::ItemFlags LocalProcessList::flags(const QModelIndex &index) const
+{
+    Qt::ItemFlags flags = DeviceProcessList::flags(index);
+    if (index.isValid() && at(index.row()).pid == m_myPid)
+        flags &= ~(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+    return flags;
+}
+
 } // namespace Internal
 } // namespace RemoteLinux
diff --git a/src/plugins/projectexplorer/devicesupport/localprocesslist.h b/src/plugins/projectexplorer/devicesupport/localprocesslist.h
index c495abc984b..8bf97234ae6 100644
--- a/src/plugins/projectexplorer/devicesupport/localprocesslist.h
+++ b/src/plugins/projectexplorer/devicesupport/localprocesslist.h
@@ -47,23 +47,24 @@ class LocalProcessList : public DeviceProcessList
 
 public:
     LocalProcessList(const IDevice::ConstPtr &device, QObject *parent = 0);
+    virtual Qt::ItemFlags flags(const QModelIndex &index) const;
 
 private:
     void doUpdate();
     void doKillProcess(const DeviceProcess &process);
 
-#ifdef Q_OS_WIN
 private slots:
+#if defined(Q_OS_WIN)
     void handleWindowsUpdate();
-#endif
-
-#ifdef Q_OS_UNIX
-private slots:
+#elif defined(Q_OS_UNIX)
     void reportDelayedKillStatus();
     void updateUsingProc();
     void updateUsingPs();
+#endif
 
 private:
+    const qint64 m_myPid;
+#ifdef Q_OS_UNIX
     QString m_error;
 #endif
 };
-- 
GitLab