summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-11-01 09:17:10 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-05 09:16:47 +0100
commit161e8653c342278a4881da952ea723b107df93c0 (patch)
treee1f318e3ab9a95d1795a92f55f1af07f4c4e61c0 /src/widgets
parent142c5ef9ddd17e59d8d096ab065aee8cb50f5e8f (diff)
Disable clear button in read-only QLineEdit.
Task-number: QTBUG-34315 Change-Id: I6c318879aee907c080e871a541da4ba5eadd71ed Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qlineedit.cpp2
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp10
-rw-r--r--src/widgets/widgets/qlineedit_p.h1
3 files changed, 13 insertions, 0 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index 0bc7b7c2e3..df5ae0171c 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -495,6 +495,7 @@ void QLineEdit::setClearButtonEnabled(bool enable)
return;
if (enable) {
QAction *clearAction = new QAction(d->clearButtonIcon(), QString(), this);
+ clearAction->setEnabled(!isReadOnly());
clearAction->setObjectName(QLatin1String(clearButtonActionNameC));
d->addAction(clearAction, 0, QLineEdit::TrailingPosition, QLineEditPrivate::SideWidgetClearButton | QLineEditPrivate::SideWidgetFadeInWithText);
} else {
@@ -1336,6 +1337,7 @@ void QLineEdit::setReadOnly(bool enable)
Q_D(QLineEdit);
if (d->control->isReadOnly() != enable) {
d->control->setReadOnly(enable);
+ d->setClearButtonEnabled(!enable);
setAttribute(Qt::WA_MacShowFocusRect, !enable);
setAttribute(Qt::WA_InputMethodEnabled, d->shouldEnableInputMethod());
#ifndef QT_NO_CURSOR
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index c066f74c5a..891839ed56 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -376,6 +376,16 @@ QIcon QLineEditPrivate::clearButtonIcon() const
return QIcon(q->style()->standardPixmap(QStyle::SP_LineEditClearButton, &styleOption, q));
}
+void QLineEditPrivate::setClearButtonEnabled(bool enabled)
+{
+ foreach (const SideWidgetEntry &e, trailingSideWidgets) {
+ if (e.flags & SideWidgetClearButton) {
+ e.action->setEnabled(enabled);
+ break;
+ }
+ }
+}
+
void QLineEditPrivate::positionSideWidgets()
{
Q_Q(QLineEdit);
diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h
index e807c7fc52..181a23449b 100644
--- a/src/widgets/widgets/qlineedit_p.h
+++ b/src/widgets/widgets/qlineedit_p.h
@@ -199,6 +199,7 @@ public:
void removeAction(QAction *action);
QSize iconSize() const;
QIcon clearButtonIcon() const;
+ void setClearButtonEnabled(bool enabled);
void positionSideWidgets();
inline bool hasSideWidgets() const { return !leadingSideWidgets.isEmpty() || !trailingSideWidgets.isEmpty(); }
inline const SideWidgetEntryList &leftSideWidgetList() const