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

Reply via email to