diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs
index 2149bdfe03..e1da701371 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs
@@ -102,7 +102,7 @@ namespace ICSharpCode.AvalonEdit.Editing
///
public TextLocation Location {
get {
- return position;
+ return position.Location;
}
set {
this.Position = new TextViewPosition(value);
@@ -174,7 +174,7 @@ namespace ICSharpCode.AvalonEdit.Editing
if (document == null) {
return 0;
} else {
- return document.GetOffset(position);
+ return document.GetOffset(position.Location);
}
}
set {
@@ -279,7 +279,7 @@ namespace ICSharpCode.AvalonEdit.Editing
// mark column as validated
visualColumnValid = true;
- int caretOffset = textView.Document.GetOffset(position);
+ int caretOffset = textView.Document.GetOffset(position.Location);
int firstDocumentLineOffset = visualLine.FirstDocumentLine.Offset;
position.VisualColumn = visualLine.ValidateVisualColumn(position, textArea.Selection.EnableVirtualSpace);
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/RectangleSelection.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/RectangleSelection.cs
index c201780ead..387ae39560 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/RectangleSelection.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/RectangleSelection.cs
@@ -45,8 +45,8 @@ namespace ICSharpCode.AvalonEdit.Editing
this.endLine = end.Line;
this.startXPos = GetXPos(textArea, start);
this.endXPos = GetXPos(textArea, end);
- this.startOffset = document.GetOffset(start);
- this.endOffset = document.GetOffset(end);
+ this.startOffset = document.GetOffset(start.Location);
+ this.endOffset = document.GetOffset(end.Location);
CalculateSegments();
}
@@ -59,7 +59,7 @@ namespace ICSharpCode.AvalonEdit.Editing
this.startXPos = startXPos;
this.endXPos = GetXPos(textArea, end);
this.startOffset = startOffset;
- this.endOffset = document.GetOffset(end);
+ this.endOffset = document.GetOffset(end.Location);
CalculateSegments();
}
@@ -71,7 +71,7 @@ namespace ICSharpCode.AvalonEdit.Editing
this.endLine = endLine;
this.startXPos = GetXPos(textArea, start);
this.endXPos = endXPos;
- this.startOffset = document.GetOffset(start);
+ this.startOffset = document.GetOffset(start.Location);
this.endOffset = endOffset;
CalculateSegments();
}
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Selection.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Selection.cs
index 0a119379d7..4826775f25 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Selection.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Selection.cs
@@ -35,7 +35,7 @@ namespace ICSharpCode.AvalonEdit.Editing
{
if (textArea == null)
throw new ArgumentNullException("textArea");
- if (textArea.Document.GetOffset(start) == textArea.Document.GetOffset(end) && start.VisualColumn == end.VisualColumn)
+ if (textArea.Document.GetOffset(start.Location) == textArea.Document.GetOffset(end.Location) && start.VisualColumn == end.VisualColumn)
return textArea.emptySelection;
else
return new SimpleSelection(textArea, start, end);
@@ -112,6 +112,9 @@ namespace ICSharpCode.AvalonEdit.Editing
get { return Length == 0; }
}
+ ///
+ /// Gets whether virtual space is enabled for this selection.
+ ///
public virtual bool EnableVirtualSpace {
get { return textArea.Options.EnableVirtualSpace; }
}
@@ -128,8 +131,8 @@ namespace ICSharpCode.AvalonEdit.Editing
public abstract Selection SetEndpoint(TextViewPosition endPosition);
///
- /// If this selection is empty, starts a new selection from to
- /// , otherwise, changes the endpoint of this selection.
+ /// If this selection is empty, starts a new selection from to
+ /// , otherwise, changes the endpoint of this selection.
///
public abstract Selection StartSelectionOrSetEndpoint(TextViewPosition startPosition, TextViewPosition endPosition);
diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLine.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLine.cs
index f6ac5e1737..c49607f61f 100644
--- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLine.cs
+++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLine.cs
@@ -65,6 +65,9 @@ namespace ICSharpCode.AvalonEdit.Rendering
///
public int VisualLength { get; private set; }
+ ///
+ /// Length in visual line coordinates including the end of line marker, if TextEditorOptions.ShowEndOfLine is enabled.
+ ///
public int VisualLengthWithEndOfLineMarker {
get {
int length = VisualLength;
@@ -346,11 +349,19 @@ namespace ICSharpCode.AvalonEdit.Rendering
return GetVisualColumn(point, textView.Options.EnableVirtualSpace);
}
+ ///
+ /// Gets the visual column from a document position (relative to top left of the document).
+ /// If the user clicks between two visual columns, rounds to the nearest column.
+ ///
public int GetVisualColumn(Point point, bool allowVirtualSpace)
{
return GetVisualColumn(GetTextLineByVisualYPosition(point.Y), point.X, allowVirtualSpace);
}
+ ///
+ /// Gets the visual column from a document position (relative to top left of the document).
+ /// If the user clicks between two visual columns, rounds to the nearest column.
+ ///
public int GetVisualColumn(TextLine textLine, double xPos, bool allowVirtualSpace)
{
if (xPos > textLine.WidthIncludingTrailingWhitespace) {
@@ -363,11 +374,17 @@ namespace ICSharpCode.AvalonEdit.Rendering
return ch.FirstCharacterIndex + ch.TrailingLength;
}
+ ///
+ /// Validates the visual column and returns the correct one.
+ ///
public int ValidateVisualColumn(TextViewPosition position, bool allowVirtualSpace)
{
- return ValidateVisualColumn(Document.GetOffset(position), position.VisualColumn, allowVirtualSpace);
+ return ValidateVisualColumn(Document.GetOffset(position.Location), position.VisualColumn, allowVirtualSpace);
}
+ ///
+ /// Validates the visual column and returns the correct one.
+ ///
public int ValidateVisualColumn(int offset, int visualColumn, bool allowVirtualSpace)
{
int firstDocumentLineOffset = this.FirstDocumentLine.Offset;
@@ -396,6 +413,10 @@ namespace ICSharpCode.AvalonEdit.Rendering
return GetVisualColumnFloor(point, textView.Options.EnableVirtualSpace);
}
+ ///
+ /// Gets the visual column from a document position (relative to top left of the document).
+ /// If the user clicks between two visual columns, returns the first of those columns.
+ ///
public int GetVisualColumnFloor(Point point, bool allowVirtualSpace)
{
TextLine textLine = GetTextLineByVisualYPosition(point.Y);