From cec7dcc723cd234c9bbb9d7df78fd96820523e87 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sat, 10 Jan 2015 23:03:46 +0100 Subject: QTextDocumentLayout: handle QTextBlock visibility Task-number: QTBUG-10153 Change-Id: I0420b9c59a7a437da28675349c14e84bfa4aea54 Reviewed-by: Konstantin Ritt Reviewed-by: Lars Knoll --- src/gui/text/qtextdocumentlayout.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gui/text/qtextdocumentlayout.cpp') diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp index a96a8e18e6..141e91c3c9 100644 --- a/src/gui/text/qtextdocumentlayout.cpp +++ b/src/gui/text/qtextdocumentlayout.cpp @@ -1267,7 +1267,7 @@ void QTextDocumentLayoutPrivate::drawBlock(const QPointF &offset, QPainter *pain const QTextLayout *tl = bl.layout(); QRectF r = tl->boundingRect(); r.translate(offset + tl->position()); - if (context.clip.isValid() && (r.bottom() < context.clip.y() || r.top() > context.clip.bottom())) + if (!bl.isVisible() || (context.clip.isValid() && (r.bottom() < context.clip.y() || r.top() > context.clip.bottom()))) return; // LDEBUG << debug_indent << "drawBlock" << bl.position() << "at" << offset << "br" << tl->boundingRect(); @@ -2557,6 +2557,8 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi QTextLayoutStruct *layoutStruct, int layoutFrom, int layoutTo, const QTextBlockFormat *previousBlockFormat) { Q_Q(QTextDocumentLayout); + if (!bl.isVisible()) + return; QTextLayout *tl = bl.layout(); const int blockLength = bl.length(); @@ -3242,7 +3244,7 @@ QRectF QTextDocumentLayoutPrivate::frameBoundingRectInternal(QTextFrame *frame) QRectF QTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const { Q_D(const QTextDocumentLayout); - if (d->docPrivate->pageSize.isNull() || !block.isValid()) + if (d->docPrivate->pageSize.isNull() || !block.isValid() || !block.isVisible()) return QRectF(); d->ensureLayoutedByPosition(block.position() + block.length()); QTextFrame *frame = d->document->frameAt(block.position()); -- cgit v1.2.3