Fix crash when renaming file in file system view

Do not actually rename while iterating through the folders, first test,
rename later.
Fix-up of 0c9c747d92 which looks like it
actually tried to do that, but confused the two method calls.

Fixes: QTCREATORBUG-21741
Change-Id: I779e526e76651b61ffc75be6b4dfce1765bb758b
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
This commit is contained in:
Eike Ziller
2018-12-20 12:43:21 +01:00
committed by Robert Loehning
parent 838919e483
commit 8eac37ae76

View File

@@ -203,7 +203,7 @@ static QVector<FolderNode *> renamableFolderNodes(const Utils::FileName &before,
ProjectTree::forEachNode([&](Node *node) { ProjectTree::forEachNode([&](Node *node) {
if (node->nodeType() == NodeType::File && node->filePath() == before if (node->nodeType() == NodeType::File && node->filePath() == before
&& node->parentFolderNode() && node->parentFolderNode()
&& node->parentFolderNode()->renameFile(before.toString(), after.toString())) { && node->parentFolderNode()->canRenameFile(before.toString(), after.toString())) {
folderNodes.append(node->parentFolderNode()); folderNodes.append(node->parentFolderNode());
} }
}); });
@@ -239,7 +239,7 @@ bool FolderNavigationModel::setData(const QModelIndex &index, const QVariant &va
Utils::FileName::fromString(afterFilePath)); Utils::FileName::fromString(afterFilePath));
QVector<FolderNode *> failedNodes; QVector<FolderNode *> failedNodes;
for (FolderNode *folder : folderNodes) { for (FolderNode *folder : folderNodes) {
if (!folder->canRenameFile(beforeFilePath, afterFilePath)) if (!folder->renameFile(beforeFilePath, afterFilePath))
failedNodes.append(folder); failedNodes.append(folder);
} }
if (!failedNodes.isEmpty()) { if (!failedNodes.isEmpty()) {