Fix underline position on Liberation Mono
Ensure we don't round a underline position beyond the descent in our eagerness to avoid underlines too close to baseline. Task-number: QTCREATORBUG-15851 Change-Id: I9a29447bbcb938b7e9fb29d52fd392a1340d07c5 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>bb10
parent
1c456751b3
commit
63169fc893
|
|
@ -6251,9 +6251,6 @@ static void drawTextItemDecoration(QPainter *painter, const QPointF &pos, const
|
|||
painter->setRenderHint(QPainter::Qt4CompatiblePainting, false);
|
||||
|
||||
const qreal underlineOffset = fe->underlinePosition().toReal();
|
||||
// deliberately ceil the offset to avoid the underline coming too close to
|
||||
// the text above it.
|
||||
const qreal underlinePos = pos.y() + qCeil(underlineOffset) + 0.5;
|
||||
|
||||
if (underlineStyle == QTextCharFormat::SpellCheckUnderline) {
|
||||
QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme();
|
||||
|
|
@ -6278,6 +6275,12 @@ static void drawTextItemDecoration(QPainter *painter, const QPointF &pos, const
|
|||
painter->fillRect(pos.x(), 0, qCeil(width), qMin(wave.height(), descent), wave);
|
||||
painter->restore();
|
||||
} else if (underlineStyle != QTextCharFormat::NoUnderline) {
|
||||
// Deliberately ceil the offset to avoid the underline coming too close to
|
||||
// the text above it, but limit it to stay within descent.
|
||||
qreal adjustedUnderlineOffset = std::ceil(underlineOffset) + 0.5;
|
||||
if (underlineOffset <= fe->descent().toReal())
|
||||
adjustedUnderlineOffset = qMin(adjustedUnderlineOffset, fe->descent().toReal() - 0.5);
|
||||
const qreal underlinePos = pos.y() + adjustedUnderlineOffset;
|
||||
QColor uc = charFormat.underlineColor();
|
||||
if (uc.isValid())
|
||||
pen.setColor(uc);
|
||||
|
|
|
|||
Loading…
Reference in New Issue