Author: mkrueger
Date: 2008-02-19 10:05:27 -0500 (Tue, 19 Feb 2008)
New Revision: 96151
Added:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.mdp
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.pidb
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditor.cs
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
Log:
* Mono.TextEditor/DefaultEditActions.cs,
Mono.TextEditor/TextViewMargin.cs,
Mono.TextEditor/TextEditorData.cs, Mono.TextEditor/TextEditor.cs:
Fixed little issues found by unit testing.
* Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs,
Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs:
Extended unit tests.
Modified: trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-19
14:58:58 UTC (rev 96150)
+++ trunk/monodevelop/main/src/addins/Mono.Texteditor/ChangeLog 2008-02-19
15:05:27 UTC (rev 96151)
@@ -1,5 +1,14 @@
2008-02-19 Mike Krüger <[EMAIL PROTECTED]>
+ * Mono.TextEditor/DefaultEditActions.cs,
Mono.TextEditor/TextViewMargin.cs,
+ Mono.TextEditor/TextEditorData.cs, Mono.TextEditor/TextEditor.cs:
Fixed
+ little issues found by unit testing.
+ * Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs,
+
Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs:
+ Extended unit tests.
+
+2008-02-19 Mike Krüger <[EMAIL PROTECTED]>
+
* Mono.TextEditor/Caret.cs: Bug 362895 - Caret missplaced when jumping
to an
error.
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/DefaultEditActions.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -631,7 +631,11 @@
if (data.SelectionAnchor < data.Caret.Offset) {
data.SelectionAnchor = System.Math.Min
(anchorLine.Offset + anchorLine.EditableLength, System.Math.Max
(anchorLine.Offset, data.SelectionAnchor +
TextEditorOptions.Options.IndentationString.Length));
} else {
- data.SelectionAnchor = System.Math.Min
(anchorLine.Offset + anchorLine.EditableLength, System.Math.Max
(anchorLine.Offset, anchorLine.Offset + anchorColumn +
TextEditorOptions.Options.IndentationString.Length));
+ if (anchorColumn != 0) {
+ data.SelectionAnchor =
System.Math.Min (anchorLine.Offset + anchorLine.EditableLength, System.Math.Max
(anchorLine.Offset, anchorLine.Offset + anchorColumn +
TextEditorOptions.Options.IndentationString.Length));
+ } else {
+ data.SelectionAnchor =
anchorLine.Offset;
+ }
}
}
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditor.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditor.cs
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditor.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -595,8 +595,6 @@
protected override bool OnButtonReleaseEvent (EventButton e)
{
- if (textViewMargin.inDrag)
- Caret.Location = textViewMargin.clickLocation;
int startPos;
IMargin margin = GetMarginAtX ((int)e.X, out startPos);
if (margin != null) {
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -190,7 +190,7 @@
int startLineNr =
Document.OffsetToLineNumber (SelectionRange.Offset);
RedBlackTree<LineSegmentTree.TreeNode>.RedBlackTreeIterator iter =
this.document.GetLine (startLineNr).Iter;
LineSegment endLine =
Document.GetLineByOffset (SelectionRange.EndOffset);
- bool skipEndLine = Caret.Offset ==
endLine.Offset;
+ bool skipEndLine =
SelectionRange.EndOffset == endLine.Offset;
do {
if (iter.Current == endLine &&
skipEndLine)
break;
@@ -250,7 +250,6 @@
LineSegment toLine = Document.GetLine (to);
SelectionRange = new Segment (fromLine.Offset,
toLine.EndOffset - fromLine.Offset);
}
-
public void DeleteSelectedText ()
{
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-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor/TextViewMargin.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -537,6 +537,17 @@
PasteAction.PasteFromPrimary
(textEditor.GetTextEditorData ());
}
+ public override void MouseReleased (int button, int x, int y,
ModifierType modifierState)
+ {
+ if (inDrag)
+ Caret.Location = clickLocation;
+ if (!inSelectionDrag)
+ textEditor.ClearSelection ();
+ inSelectionDrag = false;
+ base.MouseReleased (button, x, y, modifierState);
+ }
+
+
int ScanWord (int offset, bool forwardDirection)
{
LineSegment line = Document.GetLineByOffset (offset);
Added:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests/SelectionTests.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -0,0 +1,202 @@
+// SelectionTests.cs
+//
+// Author:
+// Mike Krüger <[EMAIL PROTECTED]>
+//
+// Copyright (c) 2007 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+//
+
+using System;
+using NUnit.Framework;
+
+namespace Mono.TextEditor.Tests
+{
+ [TestFixture()]
+ public class SelectionTests
+ {
+
+ static ISegment GetSelection (TextEditorData data, bool reverse)
+ {
+ int offset1 = data.Document.Text.IndexOf ('[');
+ int offset2 = data.Document.Text.IndexOf (']');
+ return new Segment (offset1, offset2 - offset1);
+ }
+
+ static void SetSelection (TextEditorData data, bool reverse)
+ {
+ ISegment selection = GetSelection (data, reverse);
+
+ if (reverse) {
+ data.Caret.Offset = selection.Offset;
+ data.SelectionAnchor = selection.EndOffset;
+ data.ExtendSelectionTo (selection.Offset);
+ } else {
+ data.Caret.Offset = selection.EndOffset;
+ data.SelectionAnchor = selection.Offset;
+ data.ExtendSelectionTo (selection.EndOffset);
+ }
+ }
+
+ [Test()]
+ public void TestExtendSelectionTo ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+123456789
+123456789
+123456789
+123456789
+123456789";
+
+ data.SelectionAnchor = 3;
+ LineSegment line = data.Document.GetLine (3);
+
+ Assert.IsFalse (data.IsSomethingSelected);
+ data.ExtendSelectionTo (line.Offset + 3);
+
+ Assert.IsTrue (data.IsSomethingSelected);
+
+ Assert.AreEqual (3, data.SelectionRange.Offset);
+ Assert.AreEqual (line.Offset + 3,
data.SelectionRange.EndOffset);
+ }
+
+ [Test()]
+ public void TestSelectedLines ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+123[456789
+123456789
+1234]56789
+123456789
+123456789";
+ SetSelection (data, false);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [Test()]
+ public void TestSelectedLinesReverse ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+123[456789
+123456789
+1234]56789
+123456789
+123456789";
+ SetSelection (data, true);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [Test()]
+ public void TestSelectedLinesCase2 ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+123[456789
+123456789
+123456789
+]123456789
+123456789";
+ SetSelection (data, false);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [Test()]
+ public void TestSelectedLinesCase2Reverse ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+123[456789
+123456789
+123456789
+]123456789
+123456789";
+ SetSelection (data, true);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [Test()]
+ public void TestSelectedLinesCase3 ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+[123456789
+123456789
+123]456789
+123456789
+123456789";
+ SetSelection (data, false);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [Test()]
+ public void TestSelectedLinesCase3Reverse ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+data.Document.Text =
+@"123456789
+[123456789
+123456789
+123]456789
+123456789
+123456789";
+ SetSelection (data, true);
+ int lines = 0;
+ foreach (LineSegment line in data.SelectedLines)
+ lines++;
+ Assert.AreEqual (3, lines);
+ }
+
+ [TestFixtureSetUp]
+ public void SetUp()
+ {
+ Gtk.Application.Init ();
+ }
+
+ [TestFixtureTearDown]
+ public void Dispose()
+ {
+ }
+ }
+}
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs
2008-02-19 15:05:27 UTC (rev 96151)
@@ -57,7 +57,7 @@
}
[Test()]
- public void TestInsertNewLine ()
+ public void TestInsertTabLine ()
{
TextEditorData data = new
Mono.TextEditor.TextEditorData ();
data.Document.Text =
@@ -85,7 +85,7 @@
}
[Test()]
- public void TestInsertNewLineReverse ()
+ public void TestInsertTabLineReverse ()
{
TextEditorData data = new
Mono.TextEditor.TextEditorData ();
data.Document.Text =
@@ -113,7 +113,7 @@
}
[Test()]
- public void TestInsertNewLineCase2 ()
+ public void TestInsertTabLineCase2 ()
{
TextEditorData data = new
Mono.TextEditor.TextEditorData ();
data.Document.Text =
@@ -139,6 +139,60 @@
Assert.AreEqual (data.Document.GetLine(1).Length,
data.Document.GetLine(2).Length);
}
+ [Test()]
+ public void TestInsertTabLineCase3 ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+ data.Document.Text =
+@"123d456789
+123[456789
+123d456789
+]123456789
+123456789
+123456789";
+ SetSelection (data, false);
+
+ new InsertTab ().Run (data);
+ ISegment currentSelection = GetSelection (data, false);
+
+ Assert.AreEqual (currentSelection.Offset,
data.SelectionRange.Offset);
+ Assert.AreEqual (currentSelection.EndOffset,
data.SelectionRange.EndOffset);
+ Assert.AreEqual (currentSelection.EndOffset,
data.Caret.Offset);
+
+ Assert.Greater (data.Document.GetLine(1).Length,
data.Document.GetLine(0).Length);
+ Assert.Greater (data.Document.GetLine(2).Length,
data.Document.GetLine(0).Length);
+
+ Assert.AreEqual (data.Document.GetLine(0).Length,
data.Document.GetLine(3).Length);
+ Assert.AreEqual (data.Document.GetLine(1).Length,
data.Document.GetLine(2).Length);
+ }
+
+ [Test()]
+ public void TestInsertTabLineCase3Reverse ()
+ {
+ TextEditorData data = new
Mono.TextEditor.TextEditorData ();
+ data.Document.Text =
+@"123d456789
+123[456789
+123d456789
+]123456789
+123456789
+123456789";
+ SetSelection (data, true);
+
+ new InsertTab ().Run (data);
+ ISegment currentSelection = GetSelection (data, true);
+
+ Assert.AreEqual (currentSelection.Offset,
data.SelectionRange.Offset);
+ Assert.AreEqual (currentSelection.EndOffset,
data.SelectionRange.EndOffset);
+ Assert.AreEqual (currentSelection.Offset,
data.Caret.Offset);
+
+ Assert.Greater (data.Document.GetLine(1).Length,
data.Document.GetLine(0).Length);
+ Assert.Greater (data.Document.GetLine(2).Length,
data.Document.GetLine(0).Length);
+
+ Assert.AreEqual (data.Document.GetLine(0).Length,
data.Document.GetLine(3).Length);
+ Assert.AreEqual (data.Document.GetLine(1).Length,
data.Document.GetLine(2).Length);
+ }
+
[TestFixtureSetUp]
public void SetUp()
{
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.mdp
===================================================================
---
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.mdp
2008-02-19 14:58:58 UTC (rev 96150)
+++
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.mdp
2008-02-19 15:05:27 UTC (rev 96151)
@@ -1,16 +1,16 @@
<Project name="Mono.TextEditor.Tests" fileversion="2.0" language="C#"
clr-version="Net_2_0" ctype="DotNetProject">
<Configurations active="Debug">
<Configuration name="Debug" ctype="DotNetProjectConfiguration">
- <Output directory="bin/Debug" assembly="Mono.TextEditor.Tests" />
+ <Output directory="bin/Debug" assemblyKeyFile="."
assembly="Mono.TextEditor.Tests" />
<Build debugmode="True" target="Library" />
<Execution runwithwarnings="True" consolepause="True" runtime="MsNet"
clr-version="Net_2_0" />
- <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True"
unsafecodeallowed="False" generateoverflowchecks="True"
generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+ <CodeGeneration compiler="Mcs" warninglevel="0" optimize="True"
unsafecodeallowed="False" generateoverflowchecks="True"
generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
</Configuration>
<Configuration name="Release" ctype="DotNetProjectConfiguration">
<Output directory="bin/Release" assembly="Mono.TextEditor.Tests" />
<Build debugmode="False" target="Library" />
<Execution runwithwarnings="True" consolepause="True" runtime="MsNet"
clr-version="Net_2_0" />
- <CodeGeneration compiler="Mcs" warninglevel="4" optimize="True"
unsafecodeallowed="False" generateoverflowchecks="True"
generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+ <CodeGeneration compiler="Mcs" warninglevel="0" optimize="True"
unsafecodeallowed="False" generateoverflowchecks="True"
generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
</Configuration>
</Configurations>
<Contents>
@@ -18,8 +18,9 @@
<File
name="Mono.TextEditor.Tests.DefaultEditActions/InsertNewLineTests.cs"
subtype="Code" buildaction="Compile" />
<File name="Mono.TextEditor.Tests.DefaultEditActions/CaretMoveTests.cs"
subtype="Code" buildaction="Compile" />
<File name="Mono.TextEditor.Tests" subtype="Directory"
buildaction="Compile" />
+ <File name="Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs"
subtype="Code" buildaction="Compile" />
<File name="Mono.TextEditor.Tests/DocumentTests.cs" subtype="Code"
buildaction="Compile" />
- <File name="Mono.TextEditor.Tests.DefaultEditActions/InsertTabTests.cs"
subtype="Code" buildaction="Compile" />
+ <File name="Mono.TextEditor.Tests/SelectionTests.cs" subtype="Code"
buildaction="Compile" />
</Contents>
<References>
<ProjectReference type="Project" localcopy="True" refto="Mono.TextEditor"
/>
Modified:
trunk/monodevelop/main/src/addins/Mono.Texteditor/Mono.TextEditor.Tests/Mono.TextEditor.Tests.pidb
===================================================================
(Binary files differ)
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches