diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp
index 0c03eb8a67225f411709b34648c8eae70a0e4be5..ffc9a7e0b919fd30352981d4ea182311dcd4ff7e 100644
--- a/src/libs/extensionsystem/pluginview.cpp
+++ b/src/libs/extensionsystem/pluginview.cpp
@@ -151,9 +151,9 @@ void PluginView::updateList()
         m_items.append(collectionItem);
 
         Qt::CheckState groupState = Qt::Unchecked;
-        bool hasErrors = parsePluginSpecs(collectionItem, groupState, collection->plugins());
+        int state = parsePluginSpecs(collectionItem, groupState, collection->plugins());
 
-        collectionItem->setIcon(0, hasErrors ? m_errorIcon : m_okIcon);
+        collectionItem->setIcon(0, iconForState(state));
         collectionItem->setData(C_LOAD, Qt::CheckStateRole, QVariant(groupState));
         collectionItem->setToolTip(C_LOAD, tr("Load on Startup"));
         collectionItem->setData(0, Qt::UserRole, qVariantFromValue(collection));
@@ -170,14 +170,13 @@ void PluginView::updateList()
 
     m_items.append(defaultCollectionItem);
     Qt::CheckState groupState = Qt::Unchecked;
-    bool hasErrors = parsePluginSpecs(defaultCollectionItem, groupState, defaultCollection->plugins());
+    int state = parsePluginSpecs(defaultCollectionItem, groupState, defaultCollection->plugins());
 
-    defaultCollectionItem->setIcon(0, hasErrors ? m_errorIcon : m_okIcon);
+    defaultCollectionItem->setIcon(0, iconForState(state));
     defaultCollectionItem->setData(C_LOAD, Qt::CheckStateRole, QVariant(groupState));
     defaultCollectionItem->setToolTip(C_LOAD, tr("Load on Startup"));
     defaultCollectionItem->setData(0, Qt::UserRole, qVariantFromValue(defaultCollection));
 
-
     foreach (PluginSpec *spec, m_specToItem.keys())
         toggleRelatedPlugins(spec, spec->loadOnStartup() && !spec->ignoreOnStartup());
 
@@ -192,14 +191,15 @@ void PluginView::updateList()
         m_ui->categoryWidget->setCurrentItem(m_ui->categoryWidget->topLevelItem(0));
 }
 
-bool PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &groupState, QList<PluginSpec*> plugins)
+int PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &groupState, QList<PluginSpec*> plugins)
 {
-    bool hasErrors = false;
+    int ret = 0;
     int loadCount = 0;
+
     for (int i = 0; i < plugins.length(); ++i) {
         PluginSpec *spec = plugins[i];
         if (spec->hasError())
-            hasErrors = true;
+            ret |= ParsedWithErrors;
 
         QTreeWidgetItem *pluginItem = new QTreeWidgetItem(QStringList()
             << spec->name()
@@ -209,7 +209,7 @@ bool PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &g
 
         pluginItem->setToolTip(0, QDir::toNativeSeparators(spec->filePath()));
         bool ok = !spec->hasError();
-        QIcon &icon = ok ? m_okIcon : m_errorIcon;
+        QIcon icon = ok ? m_okIcon : m_errorIcon;
         if (ok && (spec->state() != PluginSpec::Running))
             icon = m_notLoadedIcon;
 
@@ -219,10 +219,8 @@ bool PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &g
         Qt::CheckState state = Qt::Unchecked;
         if (spec->loadOnStartup()) {
             state = Qt::Checked;
-            //if (!spec->ignoreOnStartup())
-                ++loadCount;
-        } else
-            hasErrors = true;
+            ++loadCount;
+        }
 
         if (!m_whitelist.contains(spec->name()))
             pluginItem->setData(C_LOAD, Qt::CheckStateRole, state);
@@ -245,14 +243,28 @@ bool PluginView::parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &g
 
     }
 
-    if (loadCount == plugins.length())
+    if (loadCount == plugins.length()) {
         groupState = Qt::Checked;
-    else if (loadCount == 0)
+        ret |= ParsedAll;
+    } else if (loadCount == 0) {
         groupState = Qt::Unchecked;
-    else
+        ret |= ParsedNone;
+    } else {
         groupState = Qt::PartiallyChecked;
+        ret = ret | ParsedPartial;
+    }
+    return ret;
+}
+
+QIcon PluginView::iconForState(int state)
+{
+    if (state & ParsedWithErrors)
+        return m_errorIcon;
+
+    if (state & ParsedNone || state & ParsedPartial)
+        return m_notLoadedIcon;
 
-    return hasErrors;
+    return m_okIcon;
 }
 
 void PluginView::selectPlugin(QTreeWidgetItem *current)
diff --git a/src/libs/extensionsystem/pluginview.h b/src/libs/extensionsystem/pluginview.h
index 28d410035e73f216b24af31c9e59baecbf104de0..d9c8b470502c31ac11dc11f6e9e8e1b15a131a76 100644
--- a/src/libs/extensionsystem/pluginview.h
+++ b/src/libs/extensionsystem/pluginview.h
@@ -75,8 +75,10 @@ private slots:
     void activatePlugin(QTreeWidgetItem *item);
 
 private:
+    enum ParsedState { ParsedNone = 1, ParsedPartial = 2, ParsedAll = 4, ParsedWithErrors = 8};
+    QIcon iconForState(int state);
     void toggleRelatedPlugins(PluginSpec *spec, bool isPluginEnabled = true);
-    bool parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &groupState, QList<PluginSpec*> plugins);
+    int parsePluginSpecs(QTreeWidgetItem *parentItem, Qt::CheckState &groupState, QList<PluginSpec*> plugins);
 
     Internal::Ui::PluginView *m_ui;
     Internal::PluginViewPrivate *p;