diff options
author | Jiang Jiang <jiang.jiang@nokia.com> | 2010-08-16 13:14:43 (GMT) |
---|---|---|
committer | Jiang Jiang <jiang.jiang@nokia.com> | 2010-08-23 09:59:31 (GMT) |
commit | dae23694cb89b853785a5772cc7e0477f65ac5bf (patch) | |
tree | 36db71964b2e10502ffd94163fb4a53da56003ae | |
parent | 6e24bef57683b26f7cc1c4cddacace413d181d00 (diff) | |
download | Qt-dae23694cb89b853785a5772cc7e0477f65ac5bf.zip Qt-dae23694cb89b853785a5772cc7e0477f65ac5bf.tar.gz Qt-dae23694cb89b853785a5772cc7e0477f65ac5bf.tar.bz2 |
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
-rw-r--r-- | src/gui/painting/qpainter.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
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<qreal> 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); |