From 60bf641041e63f8bae9d56a3b39b580aec3cd04f Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 7 Jul 2010 12:16:09 +0200
Subject: [PATCH] Projectexplorer: Delay querying for folder icon.

As a custom icon is set in most cases anyway.

Reviewed-by: Robert Loehning <robert.loehning@nokia.com>
---
 src/plugins/projectexplorer/projectnodes.cpp | 6 ++++--
 src/plugins/projectexplorer/projectnodes.h   | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp
index d9cd9b11a1a..ba171e314b4 100644
--- a/src/plugins/projectexplorer/projectnodes.cpp
+++ b/src/plugins/projectexplorer/projectnodes.cpp
@@ -154,8 +154,7 @@ bool FileNode::isGenerated() const
 */
 FolderNode::FolderNode(const QString &folderPath)  :
     Node(FolderNodeType, folderPath),
-    m_displayName(QDir::toNativeSeparators(folderPath)),
-    m_icon(Core::FileIconProvider::instance()->icon(QFileIconProvider::Folder))
+    m_displayName(QDir::toNativeSeparators(folderPath))
 {
 }
 
@@ -182,6 +181,9 @@ QString FolderNode::displayName() const
  */
 QIcon FolderNode::icon() const
 {
+    // Instantiating the Icon provider is expensive.
+    if (m_icon.isNull())
+        m_icon = Core::FileIconProvider::instance()->icon(QFileIconProvider::Folder);
     return m_icon;
 }
 
diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index 64d49e4b39b..010c5219a0d 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -147,7 +147,7 @@ private:
     // managed by ProjectNode
     friend class ProjectNode;
     QString m_displayName;
-    QIcon m_icon;
+    mutable QIcon m_icon;
 };
 
 class PROJECTEXPLORER_EXPORT ProjectNode : public FolderNode
-- 
GitLab