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

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

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

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

@ -60,6 +60,9 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
void AnchorDeleted(object sender, EventArgs e) 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(); RemoveMark();
} }

Loading…
Cancel
Save