From 6f5424466018aaaae5b11e3e5203c7427ffe65bd Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 Nov 2013 12:31:01 +0100 Subject: [PATCH] QLineEdit: Extract Method shouldShowPlaceholderText() The condition under which the placeholder text should be shown changed recently, so refactor the code to centralize the condition. It turns out that setPlaceholderText() and paintEvent() disagree on the condition already. Change-Id: Id193a9a138042ab0690082dcf634cf7487a5276e Reviewed-by: Friedemann Kleint --- src/widgets/widgets/qlineedit.cpp | 4 ++-- src/widgets/widgets/qlineedit_p.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index df5ae0171c..e93e94b83d 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -350,7 +350,7 @@ void QLineEdit::setPlaceholderText(const QString& placeholderText) Q_D(QLineEdit); if (d->placeholderText != placeholderText) { d->placeholderText = placeholderText; - if (d->control->text().isEmpty()) + if (d->shouldShowPlaceholderText()) update(); } } @@ -1895,7 +1895,7 @@ void QLineEdit::paintEvent(QPaintEvent *) int minLB = qMax(0, -fm.minLeftBearing()); int minRB = qMax(0, -fm.minRightBearing()); - if (d->control->text().isEmpty() && d->control->preeditAreaText().isEmpty()) { + if (d->shouldShowPlaceholderText() && d->control->preeditAreaText().isEmpty()) { if (!d->placeholderText.isEmpty()) { QColor col = pal.text().color(); col.setAlpha(128); diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 181a23449b..4428832dd9 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -148,6 +148,10 @@ public: { return !control->isReadOnly(); } + inline bool shouldShowPlaceholderText() const + { + return control->text().isEmpty(); + } static inline QLineEditPrivate *get(QLineEdit *lineEdit) { return lineEdit->d_func();