profile: remove model parameter from TankItem::setData()

This one is extremely obscure: TankItem::setData(), which is
called on every replot, was passed the DivePlotDataModel,
even though it doesn't access that model at all.

Instead, it connect()s to the model to stay informed of changes
to the data. First of all, this should obviously be done
once in the constructor, not on every replot.

But also, the setData() function is called on every replot
one lines before sending the model-changed signal.
Thus, the tankitem was always repainted twice.

Just remove the whole connect() thing and go for a more
deterministic model. Should the tankbar not be repainted
anywhere, add the appropriate calls there.

Accordingly rename the "modelDataChanged" slot to "replot".

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-12-23 12:00:55 +01:00 committed by Dirk Hohndel
parent 72427adc1c
commit 27810f3217
3 changed files with 8 additions and 15 deletions

View file

@ -735,7 +735,7 @@ void ProfileWidget2::plotDive(const struct dive *d, bool force, bool doClearPict
ocpo2GasItem->setVisible(false);
}
#endif
tankItem->setData(dataModel, &plotInfo, &displayed_dive);
tankItem->setData(&plotInfo, &displayed_dive);
dataModel->emitDataChanged();
// The event items are a bit special since we don't know how many events are going to