mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
profile: explicitly update profile items
Instead of listening to the dive-data-model changed and axis changed signals, update the profile items explicitly once per plot() call. This avoids double replotting of the dive items. The old code had at least two replots per plot() call: one after profileYAxis()->setMaximum() and one after dataModel->emitDataChanged(). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
dd0939b6f5
commit
0104b0a915
4 changed files with 5 additions and 12 deletions
|
@ -17,10 +17,6 @@ AbstractProfilePolygonItem::AbstractProfilePolygonItem(const DivePlotDataModel &
|
|||
hAxis(horizontal), vAxis(vertical), dataModel(model), hDataColumn(hColumn), vDataColumn(vColumn)
|
||||
{
|
||||
setCacheMode(DeviceCoordinateCache);
|
||||
connect(&dataModel, &DivePlotDataModel::dataChanged, this, &AbstractProfilePolygonItem::modelDataChanged);
|
||||
connect(&hAxis, &DiveCartesianAxis::sizeChanged, this, &AbstractProfilePolygonItem::replot);
|
||||
connect(&vAxis, &DiveCartesianAxis::sizeChanged, this, &AbstractProfilePolygonItem::replot);
|
||||
connect(&vAxis, &DiveCartesianAxis::maxChanged, this, &AbstractProfilePolygonItem::replot);
|
||||
}
|
||||
|
||||
void AbstractProfilePolygonItem::clear()
|
||||
|
@ -880,7 +876,6 @@ void DiveReportedCeiling::paint(QPainter *painter, const QStyleOptionGraphicsIte
|
|||
|
||||
void PartialPressureGasItem::modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
|
||||
{
|
||||
//AbstractProfilePolygonItem::modelDataChanged();
|
||||
if (!shouldCalculateStuff(topLeft, bottomRight))
|
||||
return;
|
||||
|
||||
|
|
|
@ -735,7 +735,11 @@ void ProfileWidget2::plotDive(const struct dive *d, bool force, bool doClearPict
|
|||
tankItem->setData(&plotInfo, &displayed_dive);
|
||||
|
||||
gasYAxis->update();
|
||||
dataModel->emitDataChanged();
|
||||
|
||||
// Replot dive items
|
||||
for (AbstractProfilePolygonItem *item: profileItems)
|
||||
item->replot();
|
||||
|
||||
// The event items are a bit special since we don't know how many events are going to
|
||||
// exist on a dive, so I cant create cache items for that. that's why they are here
|
||||
// while all other items are up there on the constructor.
|
||||
|
|
|
@ -223,8 +223,3 @@ double DivePlotDataModel::po2Max() const
|
|||
{
|
||||
return max_gas(pInfo, &gas_pressures::o2);
|
||||
}
|
||||
|
||||
void DivePlotDataModel::emitDataChanged()
|
||||
{
|
||||
emit dataChanged(QModelIndex(), QModelIndex());
|
||||
}
|
||||
|
|
|
@ -85,7 +85,6 @@ public:
|
|||
double pheMax() const;
|
||||
double pn2Max() const;
|
||||
double po2Max() const;
|
||||
void emitDataChanged();
|
||||
|
||||
private:
|
||||
struct plot_info pInfo;
|
||||
|
|
Loading…
Reference in a new issue