public int OnAfterRemoveDirectories(int cProjects, int cDirectories, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSREMOVEDIRECTORYFLAGS[] rgFlags) { ThreadHelper.ThrowIfNotOnUIThread(); if (rgpProjects == null || rgpszMkDocuments == null) { return(VSErr.E_POINTER); } for (int iProject = 0, iDirectory = 0; (iProject < cProjects) && (iDirectory < cDirectories); iProject++) { int iLastDirectoryThisProject = (iProject < cProjects - 1) ? rgFirstIndices[iProject + 1] : cDirectories; IVsSccProject2 sccProject = rgpProjects[iProject] as IVsSccProject2; bool track = SccEvents.TrackProjectChanges(sccProject); for (; iDirectory < iLastDirectoryThisProject; iDirectory++) { if (sccProject == null || !track) { continue; // Not handled by our provider } string dir = rgpszMkDocuments[iDirectory]; if (!SvnItem.IsValidPath(dir)) { continue; } dir = SvnTools.GetNormalizedFullPath(dir); SccEvents.OnProjectDirectoryRemoved(sccProject, dir, rgFlags[iDirectory]); if (SccProvider.IsActive && track) { SccEvents.AddDelayedDelete(dir); } } } return(VSErr.S_OK); }
public int OnAfterRemoveFiles(int cProjects, int cFiles, IVsProject[] rgpProjects, int[] rgFirstIndices, string[] rgpszMkDocuments, VSREMOVEFILEFLAGS[] rgFlags) { ThreadHelper.ThrowIfNotOnUIThread(); if (rgpProjects == null || rgpszMkDocuments == null) { return(VSErr.E_POINTER); } for (int iProject = 0, iFile = 0; (iProject < cProjects) && (iFile < cFiles); iProject++) { int iLastFileThisProject = (iProject < cProjects - 1) ? rgFirstIndices[iProject + 1] : cFiles; IVsSccProject2 sccProject = rgpProjects[iProject] as IVsSccProject2; bool track = SccEvents.TrackProjectChanges(sccProject); for (; iFile < iLastFileThisProject; iFile++) { if (sccProject == null || !track) { continue; // Not handled by our provider } string file = rgpszMkDocuments[iFile]; if (!SvnItem.IsValidPath(file)) { continue; } file = SvnTools.GetNormalizedFullPath(file); SccEvents.OnProjectFileRemoved(sccProject, file); if (SccProvider.IsActive && track) { SccEvents.AddDelayedDelete(file); } } } return(VSErr.S_OK); }