From 142c5ef9ddd17e59d8d096ab065aee8cb50f5e8f Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 25 Oct 2013 12:37:30 +0200 Subject: QLineEdit: Fix potential crash when removing the clear button. Remove it from the side actions list. Task-number: QTBUG-34315 Change-Id: I70063351193b504f8656e903896d155ac74f73a6 Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qlineedit.cpp | 4 ++-- src/widgets/widgets/qlineedit_p.cpp | 3 +-- src/widgets/widgets/qlineedit_p.h | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index d3c37ab612..0bc7b7c2e3 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -500,7 +500,7 @@ void QLineEdit::setClearButtonEnabled(bool enable) } else { QAction *clearAction = findChild(QLatin1String(clearButtonActionNameC)); Q_ASSERT(clearAction); - removeAction(clearAction); + d->removeAction(clearAction); delete clearAction; } } @@ -1439,7 +1439,7 @@ bool QLineEdit::event(QEvent * e) d->setCursorVisible(true); } } else if (e->type() == QEvent::ActionRemoved) { - d->removeAction(static_cast(e)); + d->removeAction(static_cast(e)->action()); } else if (e->type() == QEvent::Resize) { d->positionSideWidgets(); } diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 99d6d0b8d9..c066f74c5a 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -445,10 +445,9 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE return w; } -void QLineEditPrivate::removeAction(const QActionEvent *e) +void QLineEditPrivate::removeAction(QAction *action) { Q_Q(QLineEdit); - QAction *action = e->action(); const PositionIndexPair positionIndex = findSideWidget(action); if (positionIndex.second == -1) return; diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 8fe45972ff..e807c7fc52 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -196,7 +196,7 @@ public: QString placeholderText; QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0); - void removeAction(const QActionEvent *e); + void removeAction(QAction *action); QSize iconSize() const; QIcon clearButtonIcon() const; void positionSideWidgets(); -- cgit v1.2.3