Browse Source

Fixed exception when deleting a line that contains a bookmark.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4215 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
241ec7101a
  1. 11
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  2. 8
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs
  3. 3
      src/Main/Base/Project/Src/TextEditor/Bookmarks/BookmarkBase.cs

11
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -5,17 +5,18 @@ @@ -5,17 +5,18 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Threading;
using ICSharpCode.AvalonEdit.CodeCompletion;
using ICSharpCode.AvalonEdit.Document;
using ICSharpCode.AvalonEdit.Editing;
@ -28,6 +29,7 @@ using ICSharpCode.SharpDevelop; @@ -28,6 +29,7 @@ using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace ICSharpCode.AvalonEdit.AddIn
{
@ -175,6 +177,12 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -175,6 +177,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
return textEditor;
}
protected virtual void DisposeTextEditor(TextEditor textEditor)
{
// detach IconBarMargin from IconBarManager
textEditor.TextArea.LeftMargins.OfType<IconBarMargin>().Single().TextView = null;
}
void textEditor_TextArea_TextView_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
ITextEditor adapter = GetAdapterFromSender(sender);
@ -222,6 +230,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -222,6 +230,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
} else {
// remove secondary editor
this.Children.Remove(secondaryTextEditor);
DisposeTextEditor(secondaryTextEditor);
secondaryTextEditor = null;
secondaryTextEditorAdapter = null;
this.RowDefinitions.RemoveAt(this.RowDefinitions.Count - 1);

8
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/IconBarMargin.cs

@ -37,16 +37,18 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -37,16 +37,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected override void OnTextViewChanged(TextView oldTextView, TextView newTextView)
{
if (oldTextView != null) {
oldTextView.VisualLinesChanged -= TextViewVisualLinesChanged;
oldTextView.VisualLinesChanged -= OnRedrawRequested;
manager.RedrawRequested -= OnRedrawRequested;
}
base.OnTextViewChanged(oldTextView, newTextView);
if (newTextView != null) {
newTextView.VisualLinesChanged += TextViewVisualLinesChanged;
newTextView.VisualLinesChanged += OnRedrawRequested;
manager.RedrawRequested += OnRedrawRequested;
}
InvalidateVisual();
}
void TextViewVisualLinesChanged(object sender, EventArgs e)
void OnRedrawRequested(object sender, EventArgs e)
{
InvalidateVisual();
}

3
src/Main/Base/Project/Src/TextEditor/Bookmarks/BookmarkBase.cs

@ -60,6 +60,9 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -60,6 +60,9 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
void AnchorDeleted(object sender, EventArgs e)
{
// the anchor just became invalid, so don't try to use it again
location = Location.Empty;
anchor = null;
RemoveMark();
}

Loading…
Cancel
Save