summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-07-06 18:38:00 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-07-06 18:38:00 (GMT)
commit1dd6a2103a7f594fd79600a863ffbd354b162386 (patch)
treeb28bbe72675fb8dfe1efac4718bacd4beedf0000
parentdbd6d9d6b46b37f13482dea9edfe40772a2aaab6 (diff)
parente5e1ff0d6f4e6a8457da61b5b215730de6f960bd (diff)
downloadQt-1dd6a2103a7f594fd79600a863ffbd354b162386.zip
Qt-1dd6a2103a7f594fd79600a863ffbd354b162386.tar.gz
Qt-1dd6a2103a7f594fd79600a863ffbd354b162386.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Fix bidi reordering when part of text is rendered by fallback font
-rw-r--r--src/gui/painting/qpainter.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index a4ab00a..604c1ab 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -6512,6 +6512,10 @@ void QPainter::drawTextItem(const QPointF &p, const QTextItem &_ti)
qreal x = p.x();
qreal y = p.y();
+ bool rtl = ti.flags & QTextItem::RightToLeft;
+ if (rtl)
+ x += ti.width.toReal();
+
int start = 0;
int end, i;
for (end = 0; end < ti.glyphs.numGlyphs; ++end) {
@@ -6528,14 +6532,19 @@ void QPainter::drawTextItem(const QPointF &p, const QTextItem &_ti)
ti2.width += ti.glyphs.effectiveAdvance(i);
}
+ if (rtl)
+ x -= ti2.width.toReal();
+
d->engine->drawTextItem(QPointF(x, y), ti2);
+ if (!rtl)
+ x += ti2.width.toReal();
+
// reset the high byte for all glyphs and advance to the next sub-string
const int hi = which << 24;
for (i = start; i < end; ++i) {
glyphs.glyphs[i] = hi | glyphs.glyphs[i];
}
- x += ti2.width.toReal();
// change engine
start = end;
@@ -6550,6 +6559,9 @@ void QPainter::drawTextItem(const QPointF &p, const QTextItem &_ti)
ti2.width += ti.glyphs.effectiveAdvance(i);
}
+ if (rtl)
+ x -= ti2.width.toReal();
+
if (d->extended)
d->extended->drawTextItem(QPointF(x, y), ti2);
else