summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authoraavit <qt-info@nokia.com>2011-04-01 08:03:37 (GMT)
committeraavit <qt-info@nokia.com>2011-04-01 08:03:37 (GMT)
commit85a36e17da720cc5b051c76db55fadf42cdd1386 (patch)
tree74b6dc46ed03bb759968e73b004bbdfa0be62296 /src/gui/painting
parentc44905e50ab885ddd308dbd9854a33cef16e00bf (diff)
parent9009e0e1138b684b7013903551a37c9ac1ebdd4c (diff)
downloadQt-85a36e17da720cc5b051c76db55fadf42cdd1386.zip
Qt-85a36e17da720cc5b051c76db55fadf42cdd1386.tar.gz
Qt-85a36e17da720cc5b051c76db55fadf42cdd1386.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-fire-team
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qpainter.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 638f4ca..64ef549 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -6468,8 +6468,7 @@ static void drawTextItemDecoration(QPainter *painter, const QPointF &pos, const
const qreal underlineOffset = fe->underlinePosition().toReal();
// deliberately ceil the offset to avoid the underline coming too close to
// the text above it.
- const qreal aliasedCoordinateDelta = 0.5 - 0.015625;
- const qreal underlinePos = pos.y() + qCeil(underlineOffset) - aliasedCoordinateDelta;
+ const qreal underlinePos = pos.y() + qCeil(underlineOffset);
if (underlineStyle == QTextCharFormat::SpellCheckUnderline) {
underlineStyle = QTextCharFormat::UnderlineStyle(QApplication::style()->styleHint(QStyle::SH_SpellCheckUnderlineStyle));
@@ -8150,10 +8149,6 @@ start_lengthVariant:
engine.option.setTextDirection(layout_direction);
if (tf & Qt::AlignJustify)
engine.option.setAlignment(Qt::AlignJustify);
- else if (tf & Qt::AlignRight)
- engine.option.setAlignment(Qt::AlignRight);
- else if (tf & Qt::AlignHCenter)
- engine.option.setAlignment(Qt::AlignHCenter);
else
engine.option.setAlignment(Qt::AlignLeft); // do not do alignment twice
@@ -8249,7 +8244,18 @@ start_lengthVariant:
for (int i = 0; i < textLayout.lineCount(); i++) {
QTextLine line = textLayout.lineAt(i);
- line.draw(painter, QPointF(r.x(), r.y() + yoff));
+
+ qreal advance = line.horizontalAdvance();
+ xoff = 0;
+ if (tf & Qt::AlignRight) {
+ QTextEngine *eng = textLayout.engine();
+ xoff = r.width() - advance -
+ eng->leadingSpaceWidth(eng->lines[line.lineNumber()]).toReal();
+ }
+ else if (tf & Qt::AlignHCenter)
+ xoff = (r.width() - advance) / 2;
+
+ line.draw(painter, QPointF(r.x() + xoff, r.y() + yoff));
}
if (restore) {