ProjectExplorer Nodes: Replace dynamic_cast with as* functions

The OS X linker makes using dynamic_casts across shared object
boundaries fail, so do all casting in the projectexplorer library
and provide functions to do it.

Task-number: QTCREATORBUG-13864
Change-Id: I0e13c0986f8342d83c3b838ffdd2dd7b8312b13c
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Daniel Teske
2015-02-18 13:10:40 +01:00
parent d1e0324b22
commit 2ffd0e2d0d
10 changed files with 97 additions and 35 deletions

View File

@@ -162,7 +162,7 @@ Project *ProjectTree::projectForNode(Node *node)
if (!node)
return 0;
FolderNode *rootProjectNode = dynamic_cast<FolderNode*>(node);
FolderNode *rootProjectNode = node->asFolderNode();
if (!rootProjectNode)
rootProjectNode = node->parentFolderNode();
@@ -310,7 +310,7 @@ void ProjectTree::emitFoldersAboutToBeRemoved(FolderNode *parentFolder, const QL
Node *n = ProjectTree::currentNode();
while (n) {
if (FolderNode *fn = dynamic_cast<FolderNode *>(n)) {
if (FolderNode *fn = n->asFolderNode()) {
if (staleFolders.contains(fn)) {
ProjectNode *pn = n->projectNode();
// Make sure the node we are switching too isn't going to be removed also
@@ -363,9 +363,10 @@ void ProjectTree::emitFilesAboutToBeRemoved(FolderNode *folder, const QList<File
if (!isInNodeHierarchy(folder))
return;
if (FileNode *fileNode = dynamic_cast<FileNode *>(m_currentNode))
if (staleFiles.contains(fileNode))
m_resetCurrentNodeFile = true;
if (m_currentNode)
if (FileNode *fileNode = m_currentNode->asFileNode())
if (staleFiles.contains(fileNode))
m_resetCurrentNodeFile = true;
emit filesAboutToBeRemoved(folder, staleFiles);
}