diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/painting/qpainter.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qstatictext.cpp | 15 | ||||
-rw-r--r-- | src/gui/text/qstatictext_p.h | 2 |
3 files changed, 11 insertions, 8 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 2cb6915..1b8b718 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -5768,7 +5768,7 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static // If we don't have an extended paint engine, or if the painter is projected, // we go through standard code path if (d->extended == 0 || !d->state->matrix.isAffine()) { - staticText_d->paintText(this); + staticText_d->paintText(position, this); return; } diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index 7d4181c..a7138b9 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -530,7 +530,7 @@ namespace { }; } -void QStaticTextPrivate::paintText(QPainter *p) +void QStaticTextPrivate::paintText(const QPointF &pos, QPainter *p) { bool preferRichText = textFormat == Qt::RichText || (textFormat == Qt::AutoText && Qt::mightBeRichText(text)); @@ -538,13 +538,13 @@ void QStaticTextPrivate::paintText(QPainter *p) if (!preferRichText) { if (maximumSize.isValid()) { QRectF boundingRect; - p->drawText(QRectF(QPointF(0, 0), maximumSize), Qt::TextWordWrap, text, &boundingRect); + p->drawText(QRectF(pos, maximumSize), Qt::TextWordWrap, text, &boundingRect); actualSize = boundingRect.size(); needsClipRect = boundingRect.width() > maximumSize.width() || boundingRect.height() > maximumSize.height(); } else { - p->drawText(0, 0, text); + p->drawText(pos, text); needsClipRect = false; QFontMetrics fm(font); @@ -555,9 +555,12 @@ void QStaticTextPrivate::paintText(QPainter *p) document.setDefaultFont(font); document.setHtml(text); - QRectF rect = maximumSize.isValid() ? QRectF(QPointF(0, 0), maximumSize) : QRectF(); + QRectF rect = maximumSize.isValid() ? QRectF(pos, maximumSize) : QRectF(); document.adjustSize(); + p->save(); + p->translate(pos); document.drawContents(p, rect); + p->restore(); actualSize = document.size(); needsClipRect = maximumSize.isValid() && (actualSize.width() > maximumSize.width() @@ -581,7 +584,7 @@ void QStaticTextPrivate::init() painter.setFont(font); painter.setTransform(matrix); - paintText(&painter); + paintText(QPointF(0, 0), &painter); } @@ -605,7 +608,7 @@ void QStaticTextPrivate::init() painter.setFont(font); painter.setTransform(matrix); - paintText(&painter); + paintText(QPointF(0, 0), &painter); } } diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h index 89483d8..e758244 100644 --- a/src/gui/text/qstatictext_p.h +++ b/src/gui/text/qstatictext_p.h @@ -116,7 +116,7 @@ public: ~QStaticTextPrivate(); void init(); - void paintText(QPainter *p); + void paintText(const QPointF &pos, QPainter *p); QAtomicInt ref; // 4 bytes per text |