diff options
Diffstat (limited to 'src/widgets/widgets/qlineedit.cpp')
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 11367879e2..3df42c4819 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1987,21 +1987,28 @@ void QLineEdit::paintEvent(QPaintEvent *) p.setClipRect(r); QFontMetrics fm = fontMetrics(); + int fmHeight = 0; + if (d->shouldShowPlaceholderText()) + fmHeight = fm.boundingRect(d->placeholderText).height(); + else + fmHeight = fm.boundingRect(d->control->text() + d->control->preeditAreaText()).height(); + fmHeight = qMax(fmHeight, fm.height()); + Qt::Alignment va = QStyle::visualAlignment(d->control->layoutDirection(), QFlag(d->alignment)); switch (va & Qt::AlignVertical_Mask) { case Qt::AlignBottom: - d->vscroll = r.y() + r.height() - fm.height() - QLineEditPrivate::verticalMargin; + d->vscroll = r.y() + r.height() - fmHeight - QLineEditPrivate::verticalMargin; break; case Qt::AlignTop: d->vscroll = r.y() + QLineEditPrivate::verticalMargin; break; default: //center - d->vscroll = r.y() + (r.height() - fm.height() + 1) / 2; + d->vscroll = r.y() + (r.height() - fmHeight + 1) / 2; break; } QRect lineRect(r.x() + QLineEditPrivate::horizontalMargin, d->vscroll, - r.width() - 2 * QLineEditPrivate::horizontalMargin, fm.height()); + r.width() - 2 * QLineEditPrivate::horizontalMargin, fmHeight); if (d->shouldShowPlaceholderText()) { if (!d->placeholderText.isEmpty()) { |