From bd739ec8085b03cab418d20bfcd7bbc7f5586310 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 25 Jun 2006 13:55:35 +0000 Subject: [PATCH] Fixed SD2-745 and SD2-871 (patch by John Simons) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1518 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../BookmarkManager/BookmarkManager.cs | 17 +++++++++++------ .../Base/Project/Src/Gui/Pads/FileScout.cs | 15 ++++++--------- .../ProjectBrowser/TreeNodes/ProjectNode.cs | 5 ++--- .../TreeNodes/SolutionItemNode.cs | 4 +++- .../ProjectBrowser/TreeNodes/SolutionNode.cs | 4 +--- .../Project/Src/Services/File/FileService.cs | 18 ++++++++++++------ 6 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs index 14bf93cd82..9fa3b40209 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/BookmarkManager/BookmarkManager.cs @@ -64,20 +64,25 @@ namespace ICSharpCode.TextEditor.Document /// public void ToggleMarkAt(int lineNr) { + Bookmark newMark; + if (factory != null) + newMark = factory.CreateBookmark(document, lineNr); + else + newMark = new Bookmark(document, lineNr); + + Type newMarkType = newMark.GetType(); + for (int i = 0; i < bookmark.Count; ++i) { Bookmark mark = bookmark[i]; - if (mark.LineNumber == lineNr && mark.CanToggle) { + + if (mark.LineNumber == lineNr && mark.CanToggle && mark.GetType() == newMarkType) { bookmark.RemoveAt(i); OnRemoved(new BookmarkEventArgs(mark)); OnChanged(EventArgs.Empty); return; } } - Bookmark newMark; - if (factory != null) - newMark = factory.CreateBookmark(document, lineNr); - else - newMark = new Bookmark(document, lineNr); + bookmark.Add(newMark); OnAdded(new BookmarkEventArgs(newMark)); OnChanged(EventArgs.Empty); diff --git a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs index ebb74c8989..1bb63d83eb 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs @@ -365,21 +365,18 @@ namespace ICSharpCode.SharpDevelop.Gui { base.OnAfterLabelEdit(e); - if(e.Label == null) { + if (e.Label == null || !FileService.CheckFileName(e.Label)) { e.CancelEdit = true; return; } - string filename = ((FileListItem)Items[e.Item]).FullName; - string newname = Path.GetDirectoryName(filename) + Path.DirectorySeparatorChar + e.Label; + string oldFileName = ((FileListItem)Items[e.Item]).FullName; + string newFileName = Path.Combine(Path.GetDirectoryName(oldFileName), e.Label); - try { - File.Move(filename, newname); - ((FileListItem)Items[e.Item]).FullName = newname; - } catch(Exception ex) { + if (FileService.RenameFile(oldFileName, newFileName, false)) { + ((FileListItem)Items[e.Item]).FullName = newFileName; + } else { e.CancelEdit = true; - - MessageService.ShowError(ex, "Rename failed"); } } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs index 88eed038fb..ad3f4b2b55 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/ProjectNode.cs @@ -147,13 +147,12 @@ namespace ICSharpCode.SharpDevelop.Project // } // } string newFileName = Path.Combine(project.Directory, newName + Path.GetExtension(project.FileName)); - if (File.Exists(newFileName)) { - MessageService.ShowError("The file " + newFileName + " already exists."); + + if (!FileService.RenameFile(project.FileName, newFileName, false)) { return; } if (project.AssemblyName == project.Name) project.AssemblyName = newName; - FileService.RenameFile(project.FileName, newFileName, false); if (File.Exists(project.FileName + ".user")) FileService.RenameFile(project.FileName + ".user", newFileName + ".user", false); foreach (IProject p in ProjectService.OpenSolution.Projects) { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs index 21d4cbf95f..f192c15351 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs @@ -128,7 +128,9 @@ namespace ICSharpCode.SharpDevelop.Project } string newFileName = Path.Combine(Path.GetDirectoryName(this.FileName), newName); - FileService.RenameFile(this.FileName, newFileName, false); + if (!FileService.RenameFile(this.FileName, newFileName, false)) { + return; + } solution.Save(); } public override object AcceptVisitor(ProjectBrowserTreeNodeVisitor visitor, object data) diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs index c240b21ec1..d605bb6f97 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs @@ -60,11 +60,9 @@ namespace ICSharpCode.SharpDevelop.Project if (!FileService.CheckFileName(newName)) return; string newFileName = Path.Combine(solution.Directory, newName + ".sln"); - if (File.Exists(newFileName)) { - MessageService.ShowErrorFormatted("${res:Global.FileAlreadyExists}", newFileName); + if (!FileService.RenameFile(solution.FileName, newFileName, false)) { return; } - FileService.RenameFile(solution.FileName, newFileName, false); solution.FileName = newFileName; solution.Name = newName; } finally { diff --git a/src/Main/Base/Project/Src/Services/File/FileService.cs b/src/Main/Base/Project/Src/Services/File/FileService.cs index d18e3a3902..6624b43ccf 100644 --- a/src/Main/Base/Project/Src/Services/File/FileService.cs +++ b/src/Main/Base/Project/Src/Services/File/FileService.cs @@ -192,14 +192,20 @@ namespace ICSharpCode.Core return false; if (!eargs.OperationAlreadyDone) { try { - if (isDirectory) { - if (Directory.Exists(oldName)) { - Directory.Move(oldName, newName); + if (isDirectory && Directory.Exists(oldName)) { + + if (Directory.Exists(newName)) { + MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); + return false; } - } else { - if (File.Exists(oldName)) { - File.Move(oldName, newName); + Directory.Move(oldName, newName); + + } else if (File.Exists(oldName)) { + if (File.Exists(newName)) { + MessageService.ShowMessage(StringParser.Parse("${res:Gui.ProjectBrowser.FileInUseError}")); + return false; } + File.Move(oldName, newName); } } catch (Exception e) { if (isDirectory) {