Browse Source

Fixed ArgumentOutOfRangeException in SearchResultNode.ActivateItem.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4995 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
9865f6a922
  1. 6
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/TextMarkerService.cs
  2. 10
      src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchResultNode.cs

6
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/TextMarkerService.cs

@ -54,6 +54,12 @@ namespace ICSharpCode.AvalonEdit.AddIn
#region ITextMarkerService #region ITextMarkerService
public ITextMarker Create(int startOffset, int length) public ITextMarker Create(int startOffset, int length)
{ {
int textLength = codeEditor.Document.TextLength;
if (startOffset < 0 || startOffset > textLength)
throw new ArgumentOutOfRangeException("startOffset", startOffset, "Value must be between 0 and " + textLength);
if (length < 0 || startOffset + length > textLength)
throw new ArgumentOutOfRangeException("length", length, "length must not be negative and startOffset+length must not be after the end of the document");
TextMarker m = new TextMarker(this, startOffset, length); TextMarker m = new TextMarker(this, startOffset, length);
markers.Add(m); markers.Add(m);
// no need to mark segment for redraw: the text marker is invisible until a property is set // no need to mark segment for redraw: the text marker is invisible until a property is set

10
src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchResultNode.cs

@ -116,7 +116,14 @@ namespace SearchAndReplace
if (provider != null) { if (provider != null) {
ITextMarkerService markerService = provider.TextEditor.GetService(typeof(ITextMarkerService)) as ITextMarkerService; ITextMarkerService markerService = provider.TextEditor.GetService(typeof(ITextMarkerService)) as ITextMarkerService;
if (markerService != null) { if (markerService != null) {
ITextMarker marker = markerService.Create(provider.TextEditor.Document.PositionToOffset(lineNumber, column), result.Length); ITextMarker marker = null;
try {
marker = markerService.Create(provider.TextEditor.Document.PositionToOffset(lineNumber, column), result.Length);
} catch (ArgumentOutOfRangeException) {
// can happen if lineNumber/column is after the end of the document; or if
// result.Length is too long
}
if (marker != null) {
marker.BackgroundColor = Colors.Orange; marker.BackgroundColor = Colors.Orange;
marker.Tag = this; marker.Tag = this;
EventHandler remover = null; EventHandler remover = null;
@ -130,3 +137,4 @@ namespace SearchAndReplace
} }
} }
} }
}

Loading…
Cancel
Save