tests/auto/qtextcursor/tst_qtextcursor.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/tests/auto/qtextcursor/tst_qtextcursor.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/tests/auto/qtextcursor/tst_qtextcursor.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -151,6 +151,7 @@
 
     void cursorPositionWithBlockUndoAndRedo();
     void cursorPositionWithBlockUndoAndRedo2();
+    void cursorPositionWithBlockUndoAndRedo3();
 
 private:
     int blockCount();
@@ -226,9 +227,9 @@
     cursor.movePosition(QTextCursor::End);
     cursor.insertBlock();
     {
-	int oldPos = cursor.position();
-	cursor.movePosition(QTextCursor::End);
-	QVERIFY(cursor.position() == oldPos);
+        int oldPos = cursor.position();
+        cursor.movePosition(QTextCursor::End);
+        QVERIFY(cursor.position() == oldPos);
     }
     QVERIFY(cursor.atBlockStart());
     QVERIFY(cursor.position() == 9);
@@ -1699,8 +1700,10 @@
     QCOMPARE(selection.position(), posAfter+1);
     doc->undo();
 
+    selection.setKeepPositionOnInsert(true);
     cursor.setPosition(posAfter);
     cursor.insertText(QLatin1String("x"));
+    selection.setKeepPositionOnInsert(false);
     QCOMPARE(selection.anchor(), posBefore);
     QCOMPARE(selection.position(), posAfter);
     doc->undo();
@@ -1754,9 +1757,9 @@
 void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo()
 {
     cursor.insertText("AAAABBBBCCCCDDDD");
-    cursor.beginEditBlock();
     cursor.setPosition(12);
     int cursorPositionBefore = cursor.position();
+    cursor.beginEditBlock();
     cursor.insertText("*");
     cursor.setPosition(8);
     cursor.insertText("*");
@@ -1812,5 +1815,20 @@
     QCOMPARE(cursor.position(), cursorPositionBefore);
 }
 
+void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo3()
+{
+    // verify that it's the position of the beginEditBlock that counts, and not the last edit position
+    cursor.insertText("AAAABBBB");
+    int cursorPositionBefore = cursor.position();
+    cursor.beginEditBlock();
+    cursor.setPosition(4);
+    QVERIFY(cursor.position() != cursorPositionBefore);
+    cursor.insertText("*");
+    cursor.endEditBlock();
+    QCOMPARE(cursor.position(), 5);
+    doc->undo(&cursor);
+    QCOMPARE(cursor.position(), cursorPositionBefore);
+}
+
 QTEST_MAIN(tst_QTextCursor)
 #include "tst_qtextcursor.moc"