diff --git a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioConnection.cpp b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioConnection.cpp index 2357fd241..a65b3ec9e 100644 --- a/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioConnection.cpp +++ b/Source/Editor/Scripting/CodeEditors/VisualStudio/VisualStudioConnection.cpp @@ -286,81 +286,17 @@ namespace VisualStudio return "Visual Studio open timout"; } - static ComPtr FindItem(const ComPtr& projectItems, BSTR filePath) - { - long count; - projectItems->get_Count(&count); - if (count == 0) - return nullptr; - - for (long i = 1; i <= count; i++) // They are counting from [1..Count] - { - ComPtr projectItem; - projectItems->Item(_variant_t(i), &projectItem); - if (!projectItem) - continue; - - short fileCount = 0; - projectItem->get_FileCount(&fileCount); - for (short fileIndex = 1; fileIndex <= fileCount; fileIndex++) - { - _bstr_t filename; - projectItem->get_FileNames(fileIndex, filename.GetAddress()); - - if (filename.GetBSTR() != nullptr && AreFilePathsEqual(filePath, filename)) - { - return projectItem; - } - } - - ComPtr childProjectItems; - projectItem->get_ProjectItems(&childProjectItems); - if (childProjectItems) - { - ComPtr result = FindItem(childProjectItems, filePath); - if (result) - return result; - } - } - - return nullptr; - } - - static ComPtr FindItem(const ComPtr& solution, BSTR filePath) - { + static ComPtr FindItem(const ComPtr& solution, BSTR filePath) + { HRESULT result; - ComPtr projects; - result = solution->get_Projects(&projects); + ComPtr projectItem; + result = solution->FindProjectItem(filePath, &projectItem); if (FAILED(result)) return nullptr; - long projectsCount = 0; - result = projects->get_Count(&projectsCount); - if (FAILED(result)) - return nullptr; - - for (long projectIndex = 1; projectIndex <= projectsCount; projectIndex++) // They are counting from [1..Count] - { - ComPtr project; - result = projects->Item(_variant_t(projectIndex), &project); - if (FAILED(result) || !project) - continue; - - ComPtr projectItems; - result = project->get_ProjectItems(&projectItems); - if (FAILED(result) || !projectItems) - continue; - - auto projectItem = FindItem(projectItems, filePath); - if (projectItem) - { - return projectItem; - } - } - - return nullptr; - } + return projectItem; + } // Opens a file on a specific line in a running Visual Studio instance. //