From 458bcdf6aa882b8cca628333da2b031b6b799bda Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 16 Apr 2015 15:27:31 +0200 Subject: ProjectTree: Fix adding files from context menu We need to retrieve the current node before the dialog opens up. While the dialog has focus, the current node depends on what is visible in the EditorManager. Change-Id: Icdb212e8d837c9cd789e369f76d6a136d46fcaae Task-number: QTCREATORBUG-14295 Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/projectexplorer.cpp | 18 +++++++++++------- src/plugins/projectexplorer/projectexplorer.h | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 5f429755ad..8d3853d8a0 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -3021,29 +3021,33 @@ void ProjectExplorerPluginPrivate::addNewSubproject() void ProjectExplorerPluginPrivate::handleAddExistingFiles() { - QTC_ASSERT(ProjectTree::currentNode(), return); + Node *node = ProjectTree::currentNode(); + FolderNode *folderNode = node ? node->asFolderNode() : 0; + + QTC_ASSERT(folderNode, return); QStringList fileNames = QFileDialog::getOpenFileNames(ICore::mainWindow(), tr("Add Existing Files"), directoryFor(ProjectTree::currentNode())); if (fileNames.isEmpty()) return; - ProjectExplorerPlugin::addExistingFiles(fileNames); + ProjectExplorerPlugin::addExistingFiles(fileNames, folderNode); } void ProjectExplorerPluginPrivate::addExistingDirectory() { - QTC_ASSERT(ProjectTree::currentNode(), return); + Node *node = ProjectTree::currentNode(); + FolderNode *folderNode = node ? node->asFolderNode() : 0; + + QTC_ASSERT(folderNode, return); SelectableFilesDialogAddDirectory dialog(directoryFor(ProjectTree::currentNode()), QStringList(), ICore::mainWindow()); if (dialog.exec() == QDialog::Accepted) - ProjectExplorerPlugin::addExistingFiles(dialog.selectedFiles()); + ProjectExplorerPlugin::addExistingFiles(dialog.selectedFiles(), folderNode); } -void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths) +void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths, FolderNode *folderNode) { - Node *node = ProjectTree::currentNode(); - FolderNode *folderNode = node ? node->asFolderNode() : 0; addExistingFiles(folderNode, filePaths); } diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index a4157c3622..e548268f71 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -104,7 +104,7 @@ public: const bool forceSkipDeploy = false); static void addExistingFiles(FolderNode *projectNode, const QStringList &filePaths); - static void addExistingFiles(const QStringList &filePaths); + static void addExistingFiles(const QStringList &filePaths, FolderNode *folderNode); static void buildProject(Project *p); /// Normally there's no need to call this function. -- cgit v1.2.1