Browse Source

Fixed SD2-570: When moving or copying InProject folders, their children get excluded from the project.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@874 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
e8662bb594
  1. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  2. 32
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  3. 7
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs

@ -165,12 +165,10 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -165,12 +165,10 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
IncludeDirectoryNode((DirectoryNode)directoryNode.Parent, false);
}
}
if (directoryNode.Nodes.Count == 0) {
FileProjectItem newItem = new FileProjectItem(directoryNode.Project, ItemType.Folder);
newItem.Include = FileUtility.GetRelativePath(directoryNode.Project.Directory, directoryNode.Directory);
ProjectService.AddProjectItem(directoryNode.Project, newItem);
directoryNode.ProjectItem = newItem;
}
directoryNode.FileNodeStatus = FileNodeStatus.InProject;
if (includeSubNodes) {

32
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -40,8 +40,40 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -40,8 +40,40 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public static void CopyDirectory(string directoryName, DirectoryNode node, bool includeInProject)
{
directoryName = Path.GetFullPath(directoryName);
string copiedFileName = Path.Combine(node.Directory, Path.GetFileName(directoryName));
LoggingService.Debug("Copy " + directoryName + " to " + copiedFileName);
if (!FileUtility.IsEqualFileName(directoryName, copiedFileName)) {
if (includeInProject && ProjectService.OpenSolution != null) {
// get ProjectItems in source directory
foreach (IProject project in ProjectService.OpenSolution.Projects) {
if (!FileUtility.IsBaseDirectory(project.Directory, directoryName))
continue;
LoggingService.Debug("Searching for child items in " + project.Name);
foreach (ProjectItem item in project.Items.ToArray()) {
FileProjectItem fileItem = item as FileProjectItem;
if (fileItem == null)
continue;
string virtualFullName = Path.Combine(project.Directory, fileItem.VirtualName);
if (FileUtility.IsBaseDirectory(directoryName, virtualFullName)) {
LoggingService.Debug("Found file " + virtualFullName);
FileProjectItem newItem = new FileProjectItem(node.Project, fileItem.ItemType);
if (FileUtility.IsBaseDirectory(directoryName, fileItem.FileName)) {
newItem.FileName = FileUtility.RenameBaseDirectory(fileItem.FileName, directoryName, copiedFileName);
} else {
newItem.FileName = fileItem.FileName;
}
fileItem.CopyExtraPropertiesTo(newItem);
if (fileItem.IsLink) {
string newVirtualFullName = FileUtility.RenameBaseDirectory(virtualFullName, directoryName, copiedFileName);
fileItem.Properties["Link"] = FileUtility.GetRelativePath(node.Project.Directory, newVirtualFullName);
}
node.Project.Items.Add(newItem);
}
}
}
}
FileUtility.DeepCopy(directoryName, copiedFileName, true);
DirectoryNode newNode = new DirectoryNode(copiedFileName);
newNode.AddTo(node);

7
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -531,15 +531,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -531,15 +531,8 @@ namespace ICSharpCode.SharpDevelop.Project
public void CopyDirectoryHere(DirectoryNode node, bool performMove)
{
if (node.FileNodeStatus == FileNodeStatus.None) {
AddExistingItemsToProject.CopyDirectory(node.Directory, this, true);
if (performMove) {
FileService.RemoveFile(node.Directory, true);
}
} else {
CopyDirectoryHere(node.Directory, performMove);
}
}
public void CopyFileHere(string fileName, bool performMove)
{

Loading…
Cancel
Save