diff --git a/src/Gui/MergeActivityWizard.cpp b/src/Gui/MergeActivityWizard.cpp index 4696f0628..92a44d3bd 100644 --- a/src/Gui/MergeActivityWizard.cpp +++ b/src/Gui/MergeActivityWizard.cpp @@ -457,12 +457,33 @@ MergeActivityWizard::combine() // and XData from second ride, append if series already present foreach (XDataSeries *xdata, ride2->xdata()) { if (combined->xdata().contains(xdata->name)) { + + // Reorder to match the series present in the first activity + QStringList names = combined->xdata()[xdata->name]->valuename; + QVector indexMap; + for (int i=0; ivaluename.contains(names[i])) + indexMap << xdata->valuename.indexOf(names[i]); + + // Add the remaining ones to the end only if there is space + for (int i=0; ivaluename.count(); i++) + if (!names.contains(xdata->valuename[i]) && combined->xdata().count()xdata()[xdata->name]->valuename << xdata->valuename[i]; + indexMap << i; + } + + // finally copy the data foreach (XDataPoint *point, xdata->datapoints) { - XDataPoint *pt = new XDataPoint(*point); + XDataPoint *pt = new XDataPoint(); pt->secs = point->secs + timeOffset; pt->km = point->km + distanceOffset; + for (int i=0; inumber[i] = point->number[indexMap[i]]; + pt->string[i] = point->string[indexMap[i]]; + } combined->xdata(xdata->name)->datapoints.append(pt); } + } else { XDataSeries *xd = new XDataSeries(*xdata); xd->datapoints.clear();