summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJens Bache-Wiig <jbache@trolltech.com>2010-04-13 15:01:59 (GMT)
committerJens Bache-Wiig <jbache@trolltech.com>2010-04-13 15:04:25 (GMT)
commite0be4d7a64677d8739e342880340ae2e9c25b5ee (patch)
tree36275639337a1919399224f351ab5a2d4cc366a9 /src
parent9ef3b0687df14f738ac59d447a0cc438ef270744 (diff)
downloadQt-e0be4d7a64677d8739e342880340ae2e9c25b5ee.zip
Qt-e0be4d7a64677d8739e342880340ae2e9c25b5ee.tar.gz
Qt-e0be4d7a64677d8739e342880340ae2e9c25b5ee.tar.bz2
Fix margins for placeholdertext in QLineEdit
The margins were lacking the minimum font bearing that normal text gets. This would generally make the margin too small when showing this text. Reviewed-by: ogoffart Task-number: QTBUG-9823
Diffstat (limited to 'src')
-rw-r--r--src/gui/widgets/qlineedit.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index 0b8dca9..655fc61 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -1869,13 +1869,18 @@ void QLineEdit::paintEvent(QPaintEvent *)
}
QRect lineRect(r.x() + d->horizontalMargin, d->vscroll, r.width() - 2*d->horizontalMargin, fm.height());
+ int minLB = qMax(0, -fm.minLeftBearing());
+ int minRB = qMax(0, -fm.minRightBearing());
+
if (d->control->text().isEmpty()) {
if (!hasFocus() && !d->placeholderText.isEmpty()) {
QColor col = pal.text().color();
col.setAlpha(128);
QPen oldpen = p.pen();
p.setPen(col);
- p.drawText(lineRect, va, d->placeholderText);
+ lineRect.adjust(minLB, 0, 0, 0);
+ QString elidedText = fm.elidedText(d->placeholderText, Qt::ElideRight, lineRect.width());
+ p.drawText(lineRect, va, elidedText);
p.setPen(oldpen);
return;
}
@@ -1889,8 +1894,6 @@ void QLineEdit::paintEvent(QPaintEvent *)
// the below code handles all scrolling based on the textline (widthUsed,
// minLB, minRB), the line edit rect (lineRect) and the cursor position
// (cix).
- int minLB = qMax(0, -fm.minLeftBearing());
- int minRB = qMax(0, -fm.minRightBearing());
int widthUsed = qRound(d->control->naturalTextWidth()) + 1 + minRB;
if ((minLB + widthUsed) <= lineRect.width()) {
// text fits in lineRect; use hscroll for alignment