aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Selection.cxx4
-rw-r--r--test/simpleTests.py18
2 files changed, 20 insertions, 2 deletions
diff --git a/src/Selection.cxx b/src/Selection.cxx
index e47ace127..4a397b4aa 100644
--- a/src/Selection.cxx
+++ b/src/Selection.cxx
@@ -96,8 +96,8 @@ void SelectionRange::MoveForInsertDelete(bool insertion, Sci::Position startChan
// which position is the start and pass this into
// SelectionPosition::MoveForInsertDelete.
// There isn't any reason to move an empty selection so don't move it.
- const bool caretStart = caret < anchor;
- const bool anchorStart = anchor < caret;
+ const bool caretStart = caret.Position() < anchor.Position();
+ const bool anchorStart = anchor.Position() < caret.Position();
caret.MoveForInsertDelete(insertion, startChange, length, caretStart);
anchor.MoveForInsertDelete(insertion, startChange, length, anchorStart);
diff --git a/test/simpleTests.py b/test/simpleTests.py
index f56066690..1ede72da3 100644
--- a/test/simpleTests.py
+++ b/test/simpleTests.py
@@ -1665,6 +1665,24 @@ class TestMultiSelection(unittest.TestCase):
self.assertEquals(self.ed.Contents(), b'a1')
self.assertEquals(self.textOfSelection(0), b'')
+ def testInsertThroughVirtualSpace(self):
+ self.ed.SetContents(b"a")
+ self.ed.SetSelection(1, 1)
+ self.ed.SetSelectionNAnchorVirtualSpace(0, 2)
+ self.ed.SetSelectionNCaretVirtualSpace(0, 3)
+ self.assertEquals(self.selectionRepresentation(0), "1+2v-1+3v")
+ self.assertEquals(self.textOfSelection(0), b'')
+
+ # Append '1' past current virtual space
+ self.ed.SetTargetRange(1, 1)
+ self.ed.SetTargetStartVirtualSpace(4)
+ self.ed.SetTargetEndVirtualSpace(5)
+ self.ed.ReplaceTarget(1, b'1')
+ # Virtual space of selection all converted to real positions
+ self.assertEquals(self.selectionRepresentation(0), "3-4")
+ self.assertEquals(self.ed.Contents(), b'a 1')
+ self.assertEquals(self.textOfSelection(0), b' ')
+
class TestModalSelection(unittest.TestCase):