|  | @@ -84,7 +84,7 @@ void VTextDocumentLayout::blockRangeFromRect(const QRectF &p_rect,
 | 
	
		
			
				|  |  |      QTextBlock block = document()->firstBlock();
 | 
	
		
			
				|  |  |      while (block.isValid()) {
 | 
	
		
			
				|  |  |          const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block);
 | 
	
		
			
				|  |  | -        Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (info->top() == y
 | 
	
		
			
				|  |  |              || (info->top() < y && info->bottom() >= y)) {
 | 
	
	
		
			
				|  | @@ -103,7 +103,7 @@ void VTextDocumentLayout::blockRangeFromRect(const QRectF &p_rect,
 | 
	
		
			
				|  |  |      y += p_rect.height();
 | 
	
		
			
				|  |  |      while (block.isValid()) {
 | 
	
		
			
				|  |  |          const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block);
 | 
	
		
			
				|  |  | -        Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (info->bottom() > y) {
 | 
	
		
			
				|  |  |              p_last = block.blockNumber();
 | 
	
	
		
			
				|  | @@ -140,7 +140,7 @@ void VTextDocumentLayout::blockRangeFromRectBS(const QRectF &p_rect,
 | 
	
		
			
				|  |  |      p_last = document()->blockCount() - 1;
 | 
	
		
			
				|  |  |      while (block.isValid()) {
 | 
	
		
			
				|  |  |          const BlockLayoutInfo *tinfo = VTextBlockData::layoutInfo(block);
 | 
	
		
			
				|  |  | -        Q_ASSERT(tinfo->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(tinfo->hasOffset());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (tinfo->bottom() > y) {
 | 
	
		
			
				|  |  |              p_last = block.blockNumber();
 | 
	
	
		
			
				|  | @@ -164,7 +164,7 @@ int VTextDocumentLayout::findBlockByPosition(const QPointF &p_point) const
 | 
	
		
			
				|  |  |              return -1;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |          if (info->top() <= y && info->bottom() > y) {
 | 
	
		
			
				|  |  |              // Found it.
 | 
	
		
			
				|  |  |              return mid;
 | 
	
	
		
			
				|  | @@ -203,7 +203,7 @@ void VTextDocumentLayout::draw(QPainter *p_painter, const PaintContext &p_contex
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      while (block.isValid()) {
 | 
	
		
			
				|  |  |          const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block);
 | 
	
		
			
				|  |  | -        Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          const QRectF &rect = info->m_rect;
 | 
	
		
			
				|  |  |          QTextLayout *layout = block.layout();
 | 
	
	
		
			
				|  | @@ -339,7 +339,7 @@ QVector<QTextLayout::FormatRange> VTextDocumentLayout::formatRangeFromSelection(
 | 
	
		
			
				|  |  |              // a position to specify the line. that's more convenience in usage.
 | 
	
		
			
				|  |  |              QTextLayout::FormatRange o;
 | 
	
		
			
				|  |  |              QTextLine l = p_block.layout()->lineForTextPosition(range.cursor.position() - blpos);
 | 
	
		
			
				|  |  | -            Q_ASSERT(l.isValid());
 | 
	
		
			
				|  |  | +            V_ASSERT(l.isValid());
 | 
	
		
			
				|  |  |              o.start = l.textStart();
 | 
	
		
			
				|  |  |              o.length = l.textLength();
 | 
	
		
			
				|  |  |              if (o.start + o.length == bllen - 1) {
 | 
	
	
		
			
				|  | @@ -363,7 +363,7 @@ int VTextDocumentLayout::hitTest(const QPointF &p_point, Qt::HitTestAccuracy p_a
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      QTextBlock block = document()->findBlockByNumber(bn);
 | 
	
		
			
				|  |  | -    Q_ASSERT(block.isValid());
 | 
	
		
			
				|  |  | +    V_ASSERT(block.isValid());
 | 
	
		
			
				|  |  |      QTextLayout *layout = block.layout();
 | 
	
		
			
				|  |  |      int off = 0;
 | 
	
		
			
				|  |  |      QPointF pos = p_point - QPointF(m_margin, VTextBlockData::layoutInfo(block)->top());
 | 
	
	
		
			
				|  | @@ -494,7 +494,7 @@ void VTextDocumentLayout::clearBlockLayout(QTextBlock &p_block)
 | 
	
		
			
				|  |  |  void VTextDocumentLayout::layoutBlock(const QTextBlock &p_block)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      QTextDocument *doc = document();
 | 
	
		
			
				|  |  | -    Q_ASSERT(m_margin == doc->documentMargin());
 | 
	
		
			
				|  |  | +    V_ASSERT(m_margin == doc->documentMargin());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      QTextLayout *tl = p_block.layout();
 | 
	
		
			
				|  |  |      QTextOption option = doc->defaultTextOption();
 | 
	
	
		
			
				|  | @@ -529,9 +529,10 @@ void VTextDocumentLayout::layoutBlock(const QTextBlock &p_block)
 | 
	
		
			
				|  |  |  void VTextDocumentLayout::updateOffsetBefore(const QTextBlock &p_block)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block);
 | 
	
		
			
				|  |  | -    Q_ASSERT(!info->isNull());
 | 
	
		
			
				|  |  | +    V_ASSERT(!info->isNull());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if (p_block.blockNumber() == 0) {
 | 
	
		
			
				|  |  | +    const int blockNum = p_block.blockNumber();
 | 
	
		
			
				|  |  | +    if (blockNum == 0) {
 | 
	
		
			
				|  |  |          info->m_offset = 0;
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |          QTextBlock blk = p_block.previous();
 | 
	
	
		
			
				|  | @@ -554,26 +555,25 @@ void VTextDocumentLayout::updateOffsetBefore(const QTextBlock &p_block)
 | 
	
		
			
				|  |  |              // Now we reach a block with offset.
 | 
	
		
			
				|  |  |              qreal offset = pinfo->bottom();
 | 
	
		
			
				|  |  |              blk = blk.next();
 | 
	
		
			
				|  |  | -            while (blk.isValid()) {
 | 
	
		
			
				|  |  | +            while (blk.isValid() && blk.blockNumber() <= blockNum) {
 | 
	
		
			
				|  |  |                  BlockLayoutInfo *ninfo = VTextBlockData::layoutInfo(blk);
 | 
	
		
			
				|  |  | +                Q_ASSERT(!ninfo->isNull());
 | 
	
		
			
				|  |  |                  ninfo->m_offset = offset;
 | 
	
		
			
				|  |  | -                if (blk.blockNumber() == p_block.blockNumber()) {
 | 
	
		
			
				|  |  | -                    break;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  offset = ninfo->bottom();
 | 
	
		
			
				|  |  |                  blk = blk.next();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void VTextDocumentLayout::updateOffsetAfter(const QTextBlock &p_block)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block);
 | 
	
		
			
				|  |  | -    Q_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  | +    V_ASSERT(info->hasOffset());
 | 
	
		
			
				|  |  |      qreal offset = info->bottom();
 | 
	
		
			
				|  |  |      QTextBlock blk = p_block.next();
 | 
	
		
			
				|  |  |      while (blk.isValid()) {
 | 
	
	
		
			
				|  | @@ -599,7 +599,7 @@ qreal VTextDocumentLayout::layoutLines(const QTextBlock &p_block,
 | 
	
		
			
				|  |  |                                         qreal p_availableWidth,
 | 
	
		
			
				|  |  |                                         qreal p_height)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    Q_ASSERT(p_block.isValid());
 | 
	
		
			
				|  |  | +    V_ASSERT(p_block.isValid());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Handle block inline image.
 | 
	
		
			
				|  |  |      bool hasInlineImages = false;
 | 
	
	
		
			
				|  | @@ -696,18 +696,18 @@ void VTextDocumentLayout::finishBlockLayout(const QTextBlock &p_block,
 | 
	
		
			
				|  |  |                                              const QVector<Marker> &p_markers,
 | 
	
		
			
				|  |  |                                              const QVector<ImagePaintInfo> &p_images)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    Q_ASSERT(p_block.isValid());
 | 
	
		
			
				|  |  | +    V_ASSERT(p_block.isValid());
 | 
	
		
			
				|  |  |      ImagePaintInfo ipi;
 | 
	
		
			
				|  |  |      BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block);
 | 
	
		
			
				|  |  | -    Q_ASSERT(info->isNull());
 | 
	
		
			
				|  |  | +    V_ASSERT(info->isNull());
 | 
	
		
			
				|  |  |      info->reset();
 | 
	
		
			
				|  |  |      info->m_rect = blockRectFromTextLayout(p_block, &ipi);
 | 
	
		
			
				|  |  | -    Q_ASSERT(!info->m_rect.isNull());
 | 
	
		
			
				|  |  | +    V_ASSERT(!info->m_rect.isNull());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      bool hasImage = false;
 | 
	
		
			
				|  |  |      if (ipi.isValid()) {
 | 
	
		
			
				|  |  | -        Q_ASSERT(p_markers.isEmpty());
 | 
	
		
			
				|  |  | -        Q_ASSERT(p_images.isEmpty());
 | 
	
		
			
				|  |  | +        V_ASSERT(p_markers.isEmpty());
 | 
	
		
			
				|  |  | +        V_ASSERT(p_images.isEmpty());
 | 
	
		
			
				|  |  |          info->m_images.append(ipi);
 | 
	
		
			
				|  |  |          hasImage = true;
 | 
	
		
			
				|  |  |      } else if (!p_markers.isEmpty()) {
 | 
	
	
		
			
				|  | @@ -749,7 +749,7 @@ void VTextDocumentLayout::updateDocumentSize()
 | 
	
		
			
				|  |  |      QTextBlock blk = document()->firstBlock();
 | 
	
		
			
				|  |  |      while (blk.isValid()) {
 | 
	
		
			
				|  |  |          const BlockLayoutInfo *ninfo = VTextBlockData::layoutInfo(blk);
 | 
	
		
			
				|  |  | -        Q_ASSERT(ninfo->hasOffset());
 | 
	
		
			
				|  |  | +        V_ASSERT(ninfo->hasOffset());
 | 
	
		
			
				|  |  |          if (m_width < ninfo->m_rect.width()) {
 | 
	
		
			
				|  |  |              m_width = ninfo->m_rect.width();
 | 
	
		
			
				|  |  |              m_maximumWidthBlockNumber = blk.blockNumber();
 | 
	
	
		
			
				|  | @@ -787,7 +787,7 @@ QRectF VTextDocumentLayout::blockRectFromTextLayout(const QTextBlock &p_block,
 | 
	
		
			
				|  |  |      // Handle block non-inline image.
 | 
	
		
			
				|  |  |      if (m_blockImageEnabled) {
 | 
	
		
			
				|  |  |          VTextBlockData *blockData = VTextBlockData::blockData(p_block);
 | 
	
		
			
				|  |  | -        Q_ASSERT(blockData);
 | 
	
		
			
				|  |  | +        V_ASSERT(blockData);
 | 
	
		
			
				|  |  |          const QVector<VPreviewInfo *> &info = blockData->getPreviews();
 | 
	
		
			
				|  |  |          if (info.size() == 1) {
 | 
	
		
			
				|  |  |              const VPreviewedImageInfo& img = info.first()->m_imageInfo;
 | 
	
	
		
			
				|  | @@ -1013,7 +1013,7 @@ qreal VTextDocumentLayout::fetchInlineImagesForOneLine(const QVector<VPreviewInf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      for (int i = 0; i < p_info.size(); ++i) {
 | 
	
		
			
				|  |  |          const VPreviewedImageInfo &img = p_info[i]->m_imageInfo;
 | 
	
		
			
				|  |  | -        Q_ASSERT(img.m_inline);
 | 
	
		
			
				|  |  | +        V_ASSERT(img.m_inline);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (img.m_startPos >= start && img.m_startPos < end) {
 | 
	
		
			
				|  |  |              // Start of a new image.
 | 
	
	
		
			
				|  | @@ -1098,8 +1098,8 @@ int VTextDocumentLayout::getTextWidthWithinTextLine(const QTextLayout *p_layout,
 | 
	
		
			
				|  |  |                                                      int p_length)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      QTextLine line = p_layout->lineForTextPosition(p_pos);
 | 
	
		
			
				|  |  | -    Q_ASSERT(line.isValid());
 | 
	
		
			
				|  |  | -    Q_ASSERT(p_pos + p_length <= line.textStart() + line.textLength());
 | 
	
		
			
				|  |  | +    V_ASSERT(line.isValid());
 | 
	
		
			
				|  |  | +    V_ASSERT(p_pos + p_length <= line.textStart() + line.textLength());
 | 
	
		
			
				|  |  |      return line.cursorToX(p_pos + p_length) - line.cursorToX(p_pos);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |