equal
deleted
inserted
replaced
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" |