From dae23694cb89b853785a5772cc7e0477f65ac5bf Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Mon, 16 Aug 2010 15:14:43 +0200 Subject: Fix tabArray support for boundingRect measurement QFontMetrics::boundingRect() and size() accept a tabArray as argument to measure the size of string, but tabArray argument has no effect because qt_format_text() just ignore that. This patch make it handle tabArray so that measurement for tab aligned text can be handled correctly. Task-number: QTBUG-4904 Reviewed-by: Eskil --- src/gui/painting/qpainter.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index 314f349..c0f195a 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -7997,7 +7997,7 @@ void qt_format_text(const QFont &fnt, const QRectF &_r, } void qt_format_text(const QFont &fnt, const QRectF &_r, int tf, const QTextOption *option, const QString& str, QRectF *brect, - int tabstops, int *, int tabarraylen, + int tabstops, int *ta, int tabarraylen, QPainter *painter) { @@ -8120,6 +8120,13 @@ start_lengthVariant: if (engine.option.tabStop() < 0 && tabstops > 0) engine.option.setTabStop(tabstops); + if (engine.option.tabs().isEmpty() && ta) { + QList tabs; + for (int i = 0; i < tabarraylen; i++) + tabs.append(qreal(ta[i])); + engine.option.setTabArray(tabs); + } + engine.option.setTextDirection(layout_direction); if (tf & Qt::AlignJustify) engine.option.setAlignment(Qt::AlignJustify); -- cgit v0.12