From 31ceeec25244df305fba5a7a44838c15af39b95a Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 19 Nov 2018 19:48:31 +0800 Subject: [PATCH] VTextDocumentLayout: add debug info for the crash --- src/vtextdocumentlayout.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/vtextdocumentlayout.cpp b/src/vtextdocumentlayout.cpp index dd77c0c0..da60dbc7 100644 --- a/src/vtextdocumentlayout.cpp +++ b/src/vtextdocumentlayout.cpp @@ -447,14 +447,20 @@ void VTextDocumentLayout::documentChanged(int p_from, int p_charsRemoved, int p_ // TODO: we may need one more next block. changeEndBlock = changeStartBlock; } else { - changeEndBlock = doc->findBlock(qMax(0, p_from + charsChanged)); + changeEndBlock = doc->findBlock(p_from + charsChanged); } + qDebug() << "documentChanged" << p_from << p_charsRemoved << p_charsAdded + << m_blockCount << newBlockCount + << changeStartBlock.blockNumber() << changeEndBlock.blockNumber(); + + bool needRelayout = true; if (changeStartBlock == changeEndBlock && newBlockCount == m_blockCount) { // Change single block internal only. QTextBlock block = changeStartBlock; if (block.isValid() && block.length()) { + needRelayout = false; QRectF oldBr = blockBoundingRect(block); clearBlockLayout(block); layoutBlockAndUpdateOffset(block); @@ -468,7 +474,9 @@ void VTextDocumentLayout::documentChanged(int p_from, int p_charsRemoved, int p_ return; } } - } else { + } + + if (needRelayout) { QTextBlock block = changeStartBlock; do { clearBlockLayout(block);