Author: mkrueger
Date: 2008-02-13 10:38:19 -0500 (Wed, 13 Feb 2008)
New Revision: 95584
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
Log:
* Mono.TextEditor/TextViewMargin.cs: Fixed Bug 361473 - Incorrect
placement of the cursor with mouse click.
Modified: trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-13
15:20:21 UTC (rev 95583)
+++ trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-13
15:38:19 UTC (rev 95584)
@@ -1,5 +1,10 @@
2008-02-13 Mike Krüger <[EMAIL PROTECTED]>
+ * Mono.TextEditor/TextViewMargin.cs: Fixed Bug 361473 - Incorrect
placement
+ of the cursor with mouse click.
+
+2008-02-13 Mike Krüger <[EMAIL PROTECTED]>
+
* Mono.TextEditor/TextViewMargin.cs, Mono.TextEditor/TextMarker.cs,
Mono.TextEditor/TextEditor.cs: Optimized drawing.
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
2008-02-13 15:20:21 UTC (rev 95583)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
2008-02-13 15:38:19 UTC (rev 95584)
@@ -634,20 +634,30 @@
{
int lineNumber = Document.VisualToLogicalLine
(System.Math.Min ((int)(y + TextEditorData.VAdjustment.Value) / LineHeight,
Document.Splitter.LineCount - 1));
LineSegment line = Document.Splitter.Get (lineNumber);
- int lineXPos = 0;
+ int lineXPos = 0;
int column;
+ int visualXPos = x;
for (column = 0; column < line.EditableLength;
column++) {
+ int delta;
if (this.Document.Buffer.GetCharAt (line.Offset
+ column) == '\t') {
- lineXPos +=
TextEditorOptions.Options.TabSize * this.charWidth;
+ delta =
TextEditorOptions.Options.TabSize * this.charWidth;
} else {
- lineXPos += this.charWidth;
+ delta = this.charWidth;
}
- if (lineXPos >= x +
TextEditorData.HAdjustment.Value) {
+ int nextXPosition = lineXPos + delta;
+ if (nextXPosition >= visualXPos) {
+ if (!IsNearX1 (visualXPos, lineXPos,
nextXPosition))
+ column++;
break;
}
+ lineXPos = nextXPosition;
}
return new DocumentLocation (lineNumber, column);
}
+ static bool IsNearX1 (int pos, int x1, int x2)
+ {
+ return System.Math.Abs (x1 - pos) < System.Math.Abs (x2
- pos);
+ }
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches