Fixed visible wrap column on systems with non-fractional fonts sizes

QFontMetricsF::averageCharWidth seems to always return a fractional size
(at least on Linux/GNOME with DejaVu Mono), even when the font is not
actually drawn at sub-pixels. This caused the visible wrap column to
appear in the wrong place.

As a workaround, use the width of the character 'x', which is pretty
average and does align to pixels when needed.

Task-number: QTCREATORBUG-2746
Reviewed-by: con
This commit is contained in:
Thorbjørn Lindeijer
2010-11-22 10:20:15 +01:00
parent 10b0c3f445
commit 68266eae2e

View File

@@ -2814,7 +2814,9 @@ void BaseTextEditor::paintEvent(QPaintEvent *e)
qreal lineX = 0;
if (d->m_visibleWrapColumn > 0) {
lineX = QFontMetricsF(font()).averageCharWidth() * d->m_visibleWrapColumn + offset.x() + 4;
// Don't use QFontMetricsF::averageCharWidth here, due to it returning
// a fractional size even when this is not supported by the platform.
lineX = QFontMetricsF(font()).width(QLatin1Char('x')) * d->m_visibleWrapColumn + offset.x() + 4;
if (lineX < viewportRect.width()) {
const QBrush background = d->m_ifdefedOutFormat.background();