From 7035cce4baaed568f3d81df56ba204745a9aaa50 Mon Sep 17 00:00:00 2001 From: Patryk Mikos Date: Fri, 24 Jan 2014 18:38:44 +0100 Subject: [PATCH] Prevent negative Rect size in OverstikeMode --- .../AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs index 898b6b84cf..d6caacd890 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/Caret.cs @@ -377,9 +377,12 @@ namespace ICSharpCode.AvalonEdit.Editing double xPos = visualLine.GetTextLineVisualXPosition(textLine, position.VisualColumn); double lineTop = visualLine.GetTextLineVisualYPosition(textLine, VisualYPosition.TextTop); double lineBottom = visualLine.GetTextLineVisualYPosition(textLine, VisualYPosition.TextBottom); - double charSize = - visualLine.GetTextLineVisualXPosition(textLine, VisualColumn + 1) - - visualLine.GetTextLineVisualXPosition(textLine, VisualColumn); + + int currentPos = position.VisualColumn; + int nextPos = visualLine.GetNextCaretPosition(currentPos, LogicalDirection.Forward, CaretPositioningMode.Normal, true); + double charSize = Math.Abs( + visualLine.GetTextLineVisualXPosition(textLine, currentPos) - + visualLine.GetTextLineVisualXPosition(textLine, nextPos) ); return new Rect(xPos, lineTop,