tests/auto/qtextcursor/tst_qtextcursor.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
   149 
   149 
   150     void adjustCursorsOnInsert();
   150     void adjustCursorsOnInsert();
   151 
   151 
   152     void cursorPositionWithBlockUndoAndRedo();
   152     void cursorPositionWithBlockUndoAndRedo();
   153     void cursorPositionWithBlockUndoAndRedo2();
   153     void cursorPositionWithBlockUndoAndRedo2();
       
   154     void cursorPositionWithBlockUndoAndRedo3();
   154 
   155 
   155 private:
   156 private:
   156     int blockCount();
   157     int blockCount();
   157 
   158 
   158     QTextDocument *doc;
   159     QTextDocument *doc;
   224     QVERIFY(cursor.position() == 5);
   225     QVERIFY(cursor.position() == 5);
   225 
   226 
   226     cursor.movePosition(QTextCursor::End);
   227     cursor.movePosition(QTextCursor::End);
   227     cursor.insertBlock();
   228     cursor.insertBlock();
   228     {
   229     {
   229 	int oldPos = cursor.position();
   230         int oldPos = cursor.position();
   230 	cursor.movePosition(QTextCursor::End);
   231         cursor.movePosition(QTextCursor::End);
   231 	QVERIFY(cursor.position() == oldPos);
   232         QVERIFY(cursor.position() == oldPos);
   232     }
   233     }
   233     QVERIFY(cursor.atBlockStart());
   234     QVERIFY(cursor.atBlockStart());
   234     QVERIFY(cursor.position() == 9);
   235     QVERIFY(cursor.position() == 9);
   235 
   236 
   236     QTextCharFormat fmt;
   237     QTextCharFormat fmt;
  1697     cursor.insertText(QLatin1String("x"));
  1698     cursor.insertText(QLatin1String("x"));
  1698     QCOMPARE(selection.anchor(), posBefore);
  1699     QCOMPARE(selection.anchor(), posBefore);
  1699     QCOMPARE(selection.position(), posAfter+1);
  1700     QCOMPARE(selection.position(), posAfter+1);
  1700     doc->undo();
  1701     doc->undo();
  1701 
  1702 
       
  1703     selection.setKeepPositionOnInsert(true);
  1702     cursor.setPosition(posAfter);
  1704     cursor.setPosition(posAfter);
  1703     cursor.insertText(QLatin1String("x"));
  1705     cursor.insertText(QLatin1String("x"));
       
  1706     selection.setKeepPositionOnInsert(false);
  1704     QCOMPARE(selection.anchor(), posBefore);
  1707     QCOMPARE(selection.anchor(), posBefore);
  1705     QCOMPARE(selection.position(), posAfter);
  1708     QCOMPARE(selection.position(), posAfter);
  1706     doc->undo();
  1709     doc->undo();
  1707 
  1710 
  1708     cursor.setPosition(posAfter+1);
  1711     cursor.setPosition(posAfter+1);
  1752 
  1755 
  1753 }
  1756 }
  1754 void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo()
  1757 void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo()
  1755 {
  1758 {
  1756     cursor.insertText("AAAABBBBCCCCDDDD");
  1759     cursor.insertText("AAAABBBBCCCCDDDD");
  1757     cursor.beginEditBlock();
       
  1758     cursor.setPosition(12);
  1760     cursor.setPosition(12);
  1759     int cursorPositionBefore = cursor.position();
  1761     int cursorPositionBefore = cursor.position();
       
  1762     cursor.beginEditBlock();
  1760     cursor.insertText("*");
  1763     cursor.insertText("*");
  1761     cursor.setPosition(8);
  1764     cursor.setPosition(8);
  1762     cursor.insertText("*");
  1765     cursor.insertText("*");
  1763     cursor.setPosition(4);
  1766     cursor.setPosition(4);
  1764     cursor.insertText("*");
  1767     cursor.insertText("*");
  1810 
  1813 
  1811     QVERIFY(doc->toPlainText() == "AAAABBBBCCCC");
  1814     QVERIFY(doc->toPlainText() == "AAAABBBBCCCC");
  1812     QCOMPARE(cursor.position(), cursorPositionBefore);
  1815     QCOMPARE(cursor.position(), cursorPositionBefore);
  1813 }
  1816 }
  1814 
  1817 
       
  1818 void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo3()
       
  1819 {
       
  1820     // verify that it's the position of the beginEditBlock that counts, and not the last edit position
       
  1821     cursor.insertText("AAAABBBB");
       
  1822     int cursorPositionBefore = cursor.position();
       
  1823     cursor.beginEditBlock();
       
  1824     cursor.setPosition(4);
       
  1825     QVERIFY(cursor.position() != cursorPositionBefore);
       
  1826     cursor.insertText("*");
       
  1827     cursor.endEditBlock();
       
  1828     QCOMPARE(cursor.position(), 5);
       
  1829     doc->undo(&cursor);
       
  1830     QCOMPARE(cursor.position(), cursorPositionBefore);
       
  1831 }
       
  1832 
  1815 QTEST_MAIN(tst_QTextCursor)
  1833 QTEST_MAIN(tst_QTextCursor)
  1816 #include "tst_qtextcursor.moc"
  1834 #include "tst_qtextcursor.moc"