summaryrefslogtreecommitdiffstats
path: root/src/shared
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-07-11 14:23:28 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-07-12 12:14:43 +0000
commit6ed8a22dd2756557954dc85052870c0894de06ba (patch)
treea49597a789e4f3861a6d52efddd7d3bd7701c917 /src/shared
parent9cfa5da0238016c9732f84a3bf3642375382f77c (diff)
Eradicate the last Java-style iterators and mark the module free of them
... and of QLinkedList. The change in QDesignerAbstractPropertySheetFactory is straight-forward. The rest are little buggers: - In macdeployqt, the code iterates inside an if. Weird, but portable. - In CppCodeParser, it's still somewhat harmless: just a call to std::remove_if to avoid running into quadratic complexity, even though the original loop had a good idea of iterating backwards, saving at least some copies in the process. Need to take care there that we continue to find the _first_ main.cpp, not the last, so add a check for mainCpp.isEmpty(). - In QtGradientStopsModel, however, needed to work around the absence of QMap::rbegin()/rend(), and it shows why they're missing: QMap's funky op* makes it impossible to just use std::reverse_iterator to do the heavy lifting. Use the recently-added QKeyValueIterator to get an approximation. I say 'approximation', because that one lacks operator->, so we need to use (*it).first, which brings back memories of Qt 2's iterators... Change-Id: I051e64b8d36b04ed2e7cf7695d9b797f08efaccb Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/qtgradienteditor/qtgradientstopsmodel.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/shared/qtgradienteditor/qtgradientstopsmodel.cpp b/src/shared/qtgradienteditor/qtgradientstopsmodel.cpp
index 0dac9b867..d35c1f025 100644
--- a/src/shared/qtgradienteditor/qtgradientstopsmodel.cpp
+++ b/src/shared/qtgradienteditor/qtgradientstopsmodel.cpp
@@ -418,21 +418,21 @@ void QtGradientStopsModel::clearSelection()
selectStop(stop, false);
}
+namespace {
+ template <typename BidirectionalIterator>
+ std::reverse_iterator<BidirectionalIterator> rev(BidirectionalIterator it)
+ { return std::reverse_iterator<BidirectionalIterator>(it); }
+}
+
void QtGradientStopsModel::flipAll()
{
QMap<qreal, QtGradientStop *> stopsMap = stops();
- QMapIterator<qreal, QtGradientStop *> itStop(stopsMap);
- itStop.toBack();
-
QMap<QtGradientStop *, bool> swappedList;
-
- while (itStop.hasPrevious()) {
- itStop.previous();
-
- QtGradientStop *stop = itStop.value();
+ for (auto itStop = rev(stopsMap.keyValueEnd()), end = rev(stopsMap.keyValueBegin()); itStop != end; ++itStop) {
+ QtGradientStop *stop = (*itStop).second;
if (swappedList.contains(stop))
continue;
- const double newPos = 1.0 - itStop.key();
+ const double newPos = 1.0 - (*itStop).first;
if (stopsMap.contains(newPos)) {
QtGradientStop *swapped = stopsMap.value(newPos);
swappedList[swapped] = true;