diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gui/text/qtextdocument_p.h | 5 | ||||
| -rw-r--r-- | src/gui/text/qtextdocumentlayout.cpp | 10 | ||||
| -rw-r--r-- | src/widgets/widgets/qtextedit.cpp | 2 |
3 files changed, 11 insertions, 6 deletions
diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index 195006b130b..3769d07eb73 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -291,6 +291,11 @@ public: return get(object->document()); } + // Only test the width for 0: + // * setTextWidth(x) leads to height -1, which is valid + // * the default page size of (-1, -1) means size determined from contents, this is valid too + bool canLayout() const { return !qIsNull(pageSize.width()); } + private: QTextDocumentPrivate(const QTextDocumentPrivate& m); QTextDocumentPrivate& operator= (const QTextDocumentPrivate& m); diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp index 81eb0f49fbe..6b75449ae9e 100644 --- a/src/gui/text/qtextdocumentlayout.cpp +++ b/src/gui/text/qtextdocumentlayout.cpp @@ -3705,7 +3705,7 @@ void QTextDocumentLayout::draw(QPainter *painter, const PaintContext &context) } QFixed width = fd->size.width; - if (d->document->pageSize().width() == 0 && d->viewportRect.isValid()) { + if (d->document->pageSize().width() == -1 && d->viewportRect.isValid()) { // we're in NoWrap mode, meaning the frame should expand to the viewport // so that backgrounds are drawn correctly fd->size.width = qMax(width, QFixed::fromReal(d->viewportRect.right())); @@ -3754,7 +3754,7 @@ void QTextDocumentLayout::documentChanged(int from, int oldLength, int length) for (; blockIt.isValid() && blockIt != endIt; blockIt = blockIt.next()) blockIt.clearLayout(); - if (d->docPrivate->pageSize.isNull()) + if (!d->docPrivate->canLayout()) return; QRectF updateRect; @@ -4032,7 +4032,7 @@ QRectF QTextDocumentLayout::tableCellBoundingRect(QTextTable *table, const QText QRectF QTextDocumentLayout::tableBoundingRect(QTextTable *table) const { Q_D(const QTextDocumentLayout); - if (d->docPrivate->pageSize.isNull()) + if (!d->docPrivate->canLayout()) return QRectF(); d->ensureLayoutFinished(); @@ -4059,7 +4059,7 @@ QRectF QTextDocumentLayout::tableBoundingRect(QTextTable *table) const QRectF QTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const { Q_D(const QTextDocumentLayout); - if (d->docPrivate->pageSize.isNull()) + if (!d->docPrivate->canLayout()) return QRectF(); d->ensureLayoutFinished(); return d->frameBoundingRectInternal(frame); @@ -4088,7 +4088,7 @@ QRectF QTextDocumentLayoutPrivate::frameBoundingRectInternal(QTextFrame *frame) QRectF QTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const { Q_D(const QTextDocumentLayout); - if (d->docPrivate->pageSize.isNull() || !block.isValid() || !block.isVisible()) + if (!d->docPrivate->canLayout() || !block.isValid() || !block.isVisible()) return QRectF(); d->ensureLayoutedByPosition(block.position() + block.length()); QTextFrame *frame = d->document->frameAt(block.position()); diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp index c11b87c6bba..944dfe7aaa4 100644 --- a/src/widgets/widgets/qtextedit.cpp +++ b/src/widgets/widgets/qtextedit.cpp @@ -1521,7 +1521,7 @@ void QTextEditPrivate::relayoutDocument() QVariant alignmentProperty = doc->documentLayout()->property("contentHasAlignment"); if (alignmentProperty.userType() == QMetaType::Bool && !alignmentProperty.toBool()) { - width = 0; + width = -1; } } |
