forked from qt-creator/qt-creator
Qbs: Do not crash when using simplified project view
Root cause is trying to set the display name on a FolderNode that is not in the tree yet. Allow setting the displayname in the constructor and use that new constructor where it makes sense. Task-number: QTCREATORBUG-12897 Change-Id: I907e48cac837966e38524bfe88a87ef17d93f0b2 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
@@ -247,10 +247,12 @@ bool FileNode::isGenerated() const
|
|||||||
|
|
||||||
\sa ProjectExplorer::FileNode, ProjectExplorer::ProjectNode
|
\sa ProjectExplorer::FileNode, ProjectExplorer::ProjectNode
|
||||||
*/
|
*/
|
||||||
FolderNode::FolderNode(const QString &folderPath, NodeType nodeType) :
|
FolderNode::FolderNode(const QString &folderPath, NodeType nodeType, const QString &displayName) :
|
||||||
Node(nodeType, folderPath),
|
Node(nodeType, folderPath),
|
||||||
m_displayName(QDir::toNativeSeparators(folderPath))
|
m_displayName(displayName)
|
||||||
{
|
{
|
||||||
|
if (m_displayName.isEmpty())
|
||||||
|
m_displayName = QDir::toNativeSeparators(folderPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
FolderNode::~FolderNode()
|
FolderNode::~FolderNode()
|
||||||
|
@@ -162,7 +162,8 @@ private:
|
|||||||
class PROJECTEXPLORER_EXPORT FolderNode : public Node {
|
class PROJECTEXPLORER_EXPORT FolderNode : public Node {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit FolderNode(const QString &folderPath, NodeType nodeType = FolderNodeType);
|
explicit FolderNode(const QString &folderPath, NodeType nodeType = FolderNodeType,
|
||||||
|
const QString &displayName = QString());
|
||||||
virtual ~FolderNode();
|
virtual ~FolderNode();
|
||||||
|
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
|
@@ -527,14 +527,15 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!fn) {
|
if (!fn) {
|
||||||
fn = new FolderNode(c->path());
|
fn = new FolderNode(c->path(), ProjectExplorer::FolderNodeType,
|
||||||
|
displayNameFromPath(c->path(), baseDir));
|
||||||
root->addFolderNodes(QList<FolderNode *>() << fn);
|
root->addFolderNodes(QList<FolderNode *>() << fn);
|
||||||
} else {
|
} else {
|
||||||
foldersToRemove.removeOne(fn);
|
foldersToRemove.removeOne(fn);
|
||||||
if (updateExisting)
|
if (updateExisting)
|
||||||
fn->emitNodeUpdated();
|
fn->emitNodeUpdated();
|
||||||
|
fn->setDisplayName(displayNameFromPath(c->path(), baseDir));
|
||||||
}
|
}
|
||||||
fn->setDisplayName(displayNameFromPath(c->path(), baseDir));
|
|
||||||
|
|
||||||
setupFolder(fn, c, c->path(), updateExisting);
|
setupFolder(fn, c, c->path(), updateExisting);
|
||||||
}
|
}
|
||||||
@@ -811,9 +812,9 @@ QbsProjectNode *QbsProjectNode::findProjectNode(const QString &name)
|
|||||||
QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
|
QbsRootProjectNode::QbsRootProjectNode(QbsProject *project) :
|
||||||
QbsProjectNode(project->projectFilePath().toString()),
|
QbsProjectNode(project->projectFilePath().toString()),
|
||||||
m_project(project),
|
m_project(project),
|
||||||
m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory().toString()))
|
m_buildSystemFiles(new ProjectExplorer::FolderNode(project->projectDirectory().toString(),
|
||||||
|
ProjectExplorer::FolderNodeType, tr("Qbs files")))
|
||||||
{
|
{
|
||||||
m_buildSystemFiles->setDisplayName(tr("Qbs files"));
|
|
||||||
addFolderNodes(QList<FolderNode *>() << m_buildSystemFiles);
|
addFolderNodes(QList<FolderNode *>() << m_buildSystemFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user