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