Browse Source

Fixed SD2-829: Linked file not removed from project browser when deleted

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1483 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
77bf824719
  1. 9
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/DefaultFileNodeCommands.cs
  2. 12
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

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

@ -50,7 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public class ExcludeFileFromProject : AbstractMenuCommand public class ExcludeFileFromProject : AbstractMenuCommand
{ {
void ExcludeFileNode(FileNode fileNode) public static void ExcludeFileNode(FileNode fileNode)
{ {
List<FileNode> dependentNodes = new List<FileNode>(); List<FileNode> dependentNodes = new List<FileNode>();
foreach (TreeNode subNode in fileNode.Nodes) { foreach (TreeNode subNode in fileNode.Nodes) {
@ -60,15 +60,20 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
} }
dependentNodes.ForEach(ExcludeFileNode); dependentNodes.ForEach(ExcludeFileNode);
bool isLink = fileNode.IsLink;
ProjectService.RemoveProjectItem(fileNode.Project, fileNode.ProjectItem); ProjectService.RemoveProjectItem(fileNode.Project, fileNode.ProjectItem);
if (isLink) {
fileNode.Remove();
} else {
fileNode.ProjectItem = null; fileNode.ProjectItem = null;
fileNode.FileNodeStatus = FileNodeStatus.None; fileNode.FileNodeStatus = FileNodeStatus.None;
if (fileNode.Parent is ExtTreeNode) { if (fileNode.Parent is ExtTreeNode) {
((ExtTreeNode)fileNode.Parent).UpdateVisibility(); ((ExtTreeNode)fileNode.Parent).UpdateVisibility();
} }
} }
}
void ExcludeDirectoryNode(DirectoryNode directoryNode) static void ExcludeDirectoryNode(DirectoryNode directoryNode)
{ {
if (directoryNode.ProjectItem != null) { if (directoryNode.ProjectItem != null) {
ProjectService.RemoveProjectItem(directoryNode.Project, directoryNode.ProjectItem); ProjectService.RemoveProjectItem(directoryNode.Project, directoryNode.ProjectItem);

12
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs

@ -199,20 +199,22 @@ namespace ICSharpCode.SharpDevelop.Project
public override void Delete() public override void Delete()
{ {
if (FileNodeStatus == FileNodeStatus.Missing) {
FileService.RemoveFile(FileName, false);
Project.Save();
} else {
if (Nodes.Count > 0) { if (Nodes.Count > 0) {
if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.DeleteWithDependentFiles.Question}"))) { if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.DeleteWithDependentFiles.Question}"))) {
DeleteChildNodes(); DeleteChildNodes();
FileService.RemoveFile(FileName, false); FileService.RemoveFile(FileName, false);
Project.Save(); Project.Save();
} }
} else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) { } else if (!File.Exists(FileName)) {
FileService.RemoveFile(FileName, false); FileService.RemoveFile(FileName, false);
Project.Save(); Project.Save();
} else if (MessageService.AskQuestion(GetQuestionText("${res:ProjectComponent.ContextMenu.Delete.Question}"))) {
FileService.RemoveFile(FileName, false);
if (IsLink) {
// we need to manually remove the link
Commands.ExcludeFileFromProject.ExcludeFileNode(this);
} }
Project.Save();
} }
} }

Loading…
Cancel
Save