diff --git a/src/IntervalTreeView.cpp b/src/IntervalTreeView.cpp index d0706d21e..8d68e0ae9 100644 --- a/src/IntervalTreeView.cpp +++ b/src/IntervalTreeView.cpp @@ -65,18 +65,22 @@ IntervalTreeView::dropEvent(QDropEvent* event) QList intervals = context->rideItem()->intervals(); QList userIntervals = context->rideItem()->intervals(RideFileInterval::USER); - int indexTo = intervals.indexOf(userIntervals.at(parent->indexOfChild(target))); + int indexTo1 = parent->indexOfChild(target); + int indexTo2 = intervals.indexOf(userIntervals.at(indexTo1)); int offsetFrom = 0; int offsetTo = 0; bool change = false; foreach (QTreeWidgetItem *p, selectedItems()) { if (p->parent() == parent) { - int indexFrom = intervals.indexOf(userIntervals.at(parent->indexOfChild(p))); + int indexFrom1 = parent->indexOfChild(p); + int indexFrom2 = intervals.indexOf(userIntervals.at(indexFrom1)); + + context->rideItem()->ride()->moveInterval(indexFrom1+offsetFrom,indexTo1+offsetTo); + context->rideItem()->intervals().move(indexFrom2+offsetFrom,indexTo2+offsetTo); - context->rideItem()->intervals().move(indexFrom+offsetFrom,indexTo+offsetTo); change = true; - if (indexFromkm < p2->km; diff --git a/src/RideFile.h b/src/RideFile.h index 5a6d17afa..11b11d3bb 100644 --- a/src/RideFile.h +++ b/src/RideFile.h @@ -268,6 +268,7 @@ class RideFile : public QObject // QObject to emit signals int intervalBegin(const RideFileInterval &interval) const; int intervalBeginSecs(const double secs) const; bool removeInterval(RideFileInterval*); + void moveInterval(int from, int to); // Working with CAIBRATIONS const QList &calibrations() const { return calibrations_; }