diff options
author | Thomas Zander <t.zander@nokia.com> | 2009-11-16 10:16:47 (GMT) |
---|---|---|
committer | Thomas Zander <thomas.zander@trolltech.com> | 2009-11-16 12:02:13 (GMT) |
commit | 7e1f19c3e3036f166a84dbaa916ec1da1cc818c6 (patch) | |
tree | 8b1a7128a7e0549c4c734a0748643c007ad04bf2 | |
parent | dbaea6fa5a90742d89691685baa44a1a34598f21 (diff) | |
download | Qt-7e1f19c3e3036f166a84dbaa916ec1da1cc818c6.zip Qt-7e1f19c3e3036f166a84dbaa916ec1da1cc818c6.tar.gz Qt-7e1f19c3e3036f166a84dbaa916ec1da1cc818c6.tar.bz2 |
Fix regression in emitting of QTextDocument::undoCommandAdded()
The test I wrote was not testing if calling undo/redo had any effect
on emitting undoCommandAdded(), added these test cases and fixed the
QTextDocumentPrivate::endEditBlock so we now again emit only when an
undo command is added, not also on calling undo or redo.
Reviewed-by: mae
Reviewed-by: Samuel Rødal
-rw-r--r-- | src/gui/text/qtextdocument_p.cpp | 4 | ||||
-rw-r--r-- | tests/auto/qtextdocument/tst_qtextdocument.cpp | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 2ad6512..18e1ffc 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -1114,9 +1114,11 @@ void QTextDocumentPrivate::endEditBlock() return; if (undoEnabled && undoState > 0) { + const bool wasBlocking = !undoStack[undoState - 1].block_end; if (undoStack[undoState - 1].block_part) { undoStack[undoState - 1].block_end = true; - emit document()->undoCommandAdded(); + if (wasBlocking) + emit document()->undoCommandAdded(); } } diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp index 1d54409..11e32b0 100644 --- a/tests/auto/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp @@ -2615,6 +2615,17 @@ void tst_QTextDocument::testUndoCommandAdded() cf.setFontItalic(true); cursor.mergeCharFormat(cf); QCOMPARE(spy.count(), 1); + + spy.clear(); + doc->undo(); + QCOMPARE(spy.count(), 0); + doc->undo(); + QCOMPARE(spy.count(), 0); + spy.clear(); + doc->redo(); + QCOMPARE(spy.count(), 0); + doc->redo(); + QCOMPARE(spy.count(), 0); } void tst_QTextDocument::testUndoBlocks() |