Merge pull request #2241 from bgrabow/issue#2192-Prevent-crash-when-combining-activities

Issue#2192 prevent crash when combining activities
This commit is contained in:
Mark Liversedge
2016-12-08 07:22:52 +00:00
committed by GitHub
2 changed files with 18 additions and 23 deletions

View File

@@ -44,10 +44,10 @@
#include <qwt_plot_marker.h>
#include <qwt_scale_div.h>
#include <qwt_scale_widget.h>
#include <qwt_compat.h>
#include <qwt_text.h>
#include <qwt_legend.h>
#include <qwt_series_data.h>
#include <qwt_scale_engine.h>
#include "qwt_plot_gapped_curve.h"
@@ -2698,6 +2698,16 @@ AllPlot::replot() {
QwtPlot::replot();
}
void
AllPlot::setAxisScaleDiv(const QwtAxisId& axis, double min, double max, double step) {
int maxMajorTicks = 0;
int maxMinorTicks = 0;
QwtPlot::setAxisScaleDiv(axis,
QwtLinearScaleEngine().divideScale(
min, max, maxMajorTicks, maxMinorTicks, step)
);
}
void
AllPlot::setYMax()
{
@@ -2793,12 +2803,8 @@ AllPlot::setYMax()
while( ( qCeil(maxY / step) * labelWidth ) > axisHeight ) nextStep(step);
}
QwtValueList xytick[QwtScaleDiv::NTickTypes];
for (int i=0;i<maxY && i<2000;i+=step)
xytick[QwtScaleDiv::MajorTick]<<i;
setAxisTitle(yLeft, tr("Watts"));
setAxisScaleDiv(QwtPlot::yLeft,QwtScaleDiv(0.0,maxY,xytick));
AllPlot::setAxisScaleDiv(QwtPlot::yLeft, 0, maxY, step);
axisWidget(yLeft)->update();
}
@@ -2865,10 +2871,6 @@ AllPlot::setYMax()
while((qCeil(ymax / step) * labelWidth) > axisHeight) nextStep(step);
}
QwtValueList xytick[QwtScaleDiv::NTickTypes];
for (int i=0;i<ymax;i+=step)
xytick[QwtScaleDiv::MajorTick]<<i;
setAxisTitle(QwtAxisId(QwtAxis::yLeft, 1), labels.join(" / "));
if (labels.count() == 1 && labels[0] == tr("Core Temperature")) {
@@ -2886,8 +2888,7 @@ AllPlot::setYMax()
setAxisScale(QwtAxisId(QwtAxis::yLeft, 1),ymin<100.0f?ymin:0, ymax, step);
} else {
setAxisScaleDiv(QwtAxisId(QwtAxis::yLeft, 1),QwtScaleDiv(ymin, ymax, xytick));
AllPlot::setAxisScaleDiv(QwtAxisId(QwtAxis::yLeft, 1), ymin, ymax, step);
}
}
@@ -2984,10 +2985,6 @@ AllPlot::setYMax()
while((qCeil(ymax / step) * labelWidth) > axisHeight) nextStep(step);
}
QwtValueList xytick[QwtScaleDiv::NTickTypes];
for (int i=0;i<ymax;i+=step)
xytick[QwtScaleDiv::MajorTick]<<i;
setAxisTitle(QwtAxisId(QwtAxis::yRight, 0), labels.join(" / "));
// we just have Hb ?
@@ -3010,8 +3007,9 @@ AllPlot::setYMax()
// we just have Hb ...
setAxisScale(QwtAxisId(QwtAxis::yRight, 0),ymin<100.0f?ymin:0, ymax, step);
} else
setAxisScaleDiv(QwtAxisId(QwtAxis::yRight, 0),QwtScaleDiv(0, ymax, xytick));
} else {
AllPlot::setAxisScaleDiv(QwtAxisId(QwtAxis::yRight, 0), ymin, ymax, step);
}
}
// QwtAxis::yRight, 1
@@ -3039,11 +3037,7 @@ AllPlot::setYMax()
while( ( qCeil( (ymax - ymin ) / step) * labelWidth ) > axisHeight ) nextStep(step);
}
QwtValueList xytick[QwtScaleDiv::NTickTypes];
for (int i=ymin;i<ymax;i+=step)
xytick[QwtScaleDiv::MajorTick]<<i;
setAxisScaleDiv(QwtAxisId(QwtAxis::yRight, 1),QwtScaleDiv(ymin,ymax,xytick));
AllPlot::setAxisScaleDiv(QwtAxisId(QwtAxis::yRight, 1), ymin, ymax, step);
standard->altCurve->setBaseline(ymin);
}

View File

@@ -750,6 +750,7 @@ class AllPlot : public QwtPlot
QFont labelFont;
void setAltSlopePlotStyle (AllPlotSlopeCurve *curve);
void setAxisScaleDiv(const QwtAxisId&, double, double, double);
static inline void nextStep( int& step ) {
if (step >= 5000)
{