summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qlineedit_p.h
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2015-12-17 01:38:57 +0100
committerMarc Mutz <marc.mutz@kdab.com>2015-12-21 09:30:48 +0000
commit6066af7f09460bbf72d7aaca12836ca002dcea2a (patch)
tree20b91bf9ddd978bf64a6cf733488d3e491b02987 /src/widgets/widgets/qlineedit_p.h
parent66441d7a828ddcdae709cf4699420147f376bdcd (diff)
QLineEdit: hold SideWidgetEntry in std::vector, not QVector
This is private implementation, so there's no BC issue here. The collections ported here also do not benefit from CoW, because they are never copied. Adapt to STL API and replace foreach with C++11 range-for loops, because the former deep-copies STL containers. Also replace index-based for loops with C++11 range-for, to evade the int/size_t problem on MSVC. Saves a bit more than 1KiB in text size on optimized GCC 4.9 Linux AMD64 builds, not all of which can be attributed to the ports to range-for. Change-Id: I240030180bd1b2ca40c002b03ab72319a99a87c3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/widgets/widgets/qlineedit_p.h')
-rw-r--r--src/widgets/widgets/qlineedit_p.h10
1 files changed, 6 insertions, 4 deletions
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));
}