diff options
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 3 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 23 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 10 |
3 files changed, 22 insertions, 14 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index b8283a0818..59e1d647f9 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -2180,9 +2180,10 @@ void QLineEdit::changeEvent(QEvent *ev) update(); break; case QEvent::LayoutDirectionChange: - foreach (const QLineEditPrivate::SideWidgetEntry &e, d->trailingSideWidgets) // Refresh icon to show arrow in right direction. + for (const auto &e : d->trailingSideWidgets) { // Refresh icon to show arrow in right direction. if (e.flags & QLineEditPrivate::SideWidgetClearButton) static_cast<QLineEditIconButton *>(e.widget)->setIcon(d->clearButtonIcon()); + } d->positionSideWidgets(); break; default: diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 599ebce0ab..5afedf6823 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -382,11 +382,11 @@ void QLineEditPrivate::_q_textChanged(const QString &text) lastTextSize = newTextSize; #ifndef QT_NO_ANIMATION const bool fadeIn = newTextSize > 0; - foreach (const SideWidgetEntry &e, leadingSideWidgets) { + for (const SideWidgetEntry &e : leadingSideWidgets) { if (e.flags & SideWidgetFadeInWithText) static_cast<QLineEditIconButton *>(e.widget)->animateShow(fadeIn); } - foreach (const SideWidgetEntry &e, trailingSideWidgets) { + for (const SideWidgetEntry &e : trailingSideWidgets) { if (e.flags & SideWidgetFadeInWithText) static_cast<QLineEditIconButton *>(e.widget)->animateShow(fadeIn); } @@ -453,13 +453,17 @@ void QLineEditPrivate::positionSideWidgets() QLineEditPrivate::PositionIndexPair QLineEditPrivate::findSideWidget(const QAction *a) const { - for (int i = 0; i < leadingSideWidgets.size(); ++i) { - if (a == leadingSideWidgets.at(i).action) + int i = 0; + for (const auto &e : leadingSideWidgets) { + if (a == e.action) return PositionIndexPair(QLineEdit::LeadingPosition, i); + ++i; } - for (int i = 0; i < trailingSideWidgets.size(); ++i) { - if (a == trailingSideWidgets.at(i).action) + i = 0; + for (const auto &e : trailingSideWidgets) { + if (a == e.action) return PositionIndexPair(QLineEdit::TrailingPosition, i); + ++i; } return PositionIndexPair(QLineEdit::LeadingPosition, -1); } @@ -493,8 +497,8 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE PositionIndexPair positionIndex = before ? findSideWidget(before) : PositionIndexPair(position, -1); SideWidgetEntryList &list = positionIndex.first == QLineEdit::TrailingPosition ? trailingSideWidgets : leadingSideWidgets; if (positionIndex.second < 0) - positionIndex.second = list.size(); - list.insert(positionIndex.second, SideWidgetEntry(w, newAction, flags)); + positionIndex.second = int(list.size()); + list.insert(list.begin() + positionIndex.second, SideWidgetEntry(w, newAction, flags)); positionSideWidgets(); w->show(); return w; @@ -507,7 +511,8 @@ void QLineEditPrivate::removeAction(QAction *action) if (positionIndex.second == -1) return; SideWidgetEntryList &list = positionIndex.first == QLineEdit::TrailingPosition ? trailingSideWidgets : leadingSideWidgets; - SideWidgetEntry entry = list.takeAt(positionIndex.second); + SideWidgetEntry entry = list[positionIndex.second]; + list.erase(list.begin() + positionIndex.second); if (entry.flags & SideWidgetCreatedByWidgetAction) static_cast<QWidgetAction *>(entry.action)->releaseWidget(entry.widget); else diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 8d15aa70e8..198f301e73 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -114,7 +114,7 @@ public: QAction *action; int flags; }; - typedef QVector<SideWidgetEntry> SideWidgetEntryList; + typedef std::vector<SideWidgetEntry> SideWidgetEntryList; QLineEditPrivate() : control(0), frame(1), contextMenuEnabled(1), cursorVisible(0), @@ -210,7 +210,7 @@ public: QIcon clearButtonIcon() const; void setClearButtonEnabled(bool enabled); void positionSideWidgets(); - inline bool hasSideWidgets() const { return !leadingSideWidgets.isEmpty() || !trailingSideWidgets.isEmpty(); } + inline bool hasSideWidgets() const { return !leadingSideWidgets.empty() || !trailingSideWidgets.empty(); } inline const SideWidgetEntryList &leftSideWidgetList() const { return q_func()->layoutDirection() == Qt::LeftToRight ? leadingSideWidgets : trailingSideWidgets; } inline const SideWidgetEntryList &rightSideWidgetList() const @@ -238,15 +238,17 @@ static bool isSideWidgetVisible(const QLineEditPrivate::SideWidgetEntry &e) inline int QLineEditPrivate::effectiveLeftTextMargin() const { + const auto &list = leftSideWidgetList(); return leftTextMargin + (QLineEditIconButton::IconMargin + iconSize().width()) - * int(std::count_if(leftSideWidgetList().constBegin(), leftSideWidgetList().constEnd(), + * int(std::count_if(list.begin(), list.end(), isSideWidgetVisible)); } inline int QLineEditPrivate::effectiveRightTextMargin() const { + const auto &list = rightSideWidgetList(); return rightTextMargin + (QLineEditIconButton::IconMargin + iconSize().width()) - * int(std::count_if(rightSideWidgetList().constBegin(), rightSideWidgetList().constEnd(), + * int(std::count_if(list.begin(), list.end(), isSideWidgetVisible)); } |