diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlEditorControl.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlEditorControl.cs index c222f759d7..4de9b8f75d 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlEditorControl.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlEditorControl.cs @@ -42,6 +42,8 @@ namespace ICSharpCode.XmlEditor Document.FoldingManager.FoldingStrategy = new XmlFoldingStrategy(); TextEditorProperties = new SharpDevelopTextEditorProperties(); + Document.BookmarkManager.Factory = new SDBookmarkFactory(Document.BookmarkManager); + Document.BookmarkManager.Added += new ICSharpCode.TextEditor.Document.BookmarkEventHandler(BookmarkAdded); Document.BookmarkManager.Removed += new ICSharpCode.TextEditor.Document.BookmarkEventHandler(BookmarkRemoved); GenerateEditActions(); @@ -345,5 +347,18 @@ namespace ICSharpCode.XmlEditor ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.RemoveMark(b); } } + + /// + /// Have to add the bookmark to the BookmarkManager otherwise the bookmark is + /// not remembered when re-opening the file and does not show in the + /// bookmark manager. + /// + void BookmarkAdded(object sender, ICSharpCode.TextEditor.Document.BookmarkEventArgs e) + { + ICSharpCode.SharpDevelop.Bookmarks.SDBookmark b = e.Bookmark as ICSharpCode.SharpDevelop.Bookmarks.SDBookmark; + if (b != null) { + ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.AddMark(b); + } + } } } diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs index a6c7a72e11..e34ec69e47 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs @@ -57,7 +57,7 @@ namespace ICSharpCode.XmlEditor xmlEditor.SchemaCompletionDataItems = XmlSchemaManager.SchemaCompletionDataItems; xmlEditor.Document.DocumentChanged += new DocumentEventHandler(DocumentChanged); - + xmlEditor.ActiveTextAreaControl.Caret.CaretModeChanged += new EventHandler(CaretModeChanged); xmlEditor.ActiveTextAreaControl.Enter += new EventHandler(CaretUpdate); ((Form)ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench).Activated += new EventHandler(GotFocusEvent); @@ -518,6 +518,13 @@ namespace ICSharpCode.XmlEditor FileName = fileName; TitleName = Path.GetFileName(fileName); IsDirty = false; + + // Add bookmarks. + foreach (ICSharpCode.SharpDevelop.Bookmarks.SDBookmark bookmark in ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.GetBookmarks(fileName)) { + bookmark.Document = xmlEditor.Document; + xmlEditor.Document.BookmarkManager.Marks.Add(bookmark); + } + UpdateFolding(); SetWatcher(); } @@ -692,6 +699,8 @@ namespace ICSharpCode.XmlEditor { base.OnFileNameChanged(e); xmlEditor.FileName = base.FileName; + ICSharpCode.SharpDevelop.Bookmarks.SDBookmarkFactory factory = (ICSharpCode.SharpDevelop.Bookmarks.SDBookmarkFactory)xmlEditor.Document.BookmarkManager.Factory; + factory.ChangeFilename(base.FileName); } static bool IsFileReadOnly(string fileName)