diff options
-rw-r--r-- | profile-widget/profilewidget2.cpp | 19 | ||||
-rw-r--r-- | qt-models/cylindermodel.cpp | 3 |
2 files changed, 19 insertions, 3 deletions
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index abaefb1cd..6ca5334d4 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -914,7 +914,6 @@ void ProfileWidget2::divePlannerHandlerClicked() if (zoomLevel) return; shouldCalculateMaxDepth = false; - replot(); } void ProfileWidget2::divePlannerHandlerReleased() @@ -1827,10 +1826,13 @@ void ProfileWidget2::recreatePlannedDive() timeAxis->setMaximum(timeAxis->maximum() * 1.02); divedatapoint data = plannerModel->at(index); + depth_t oldDepth = data.depth; + int oldtime = data.time; data.depth.mm = lrint(profileYAxis->valueAt(activeHandler->pos()) / M_OR_FT(1, 1)) * M_OR_FT(1, 1); data.time = lrint(timeAxis->valueAt(activeHandler->pos())); - plannerModel->editStop(index, data); + if (data.depth.mm != oldDepth.mm || data.time != oldtime) + plannerModel->editStop(index, data); } void ProfileWidget2::keyDownAction() @@ -1839,6 +1841,8 @@ void ProfileWidget2::keyDownAction() return; DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); + bool oldRecalc = plannerModel->setRecalc(false); + Q_FOREACH (QGraphicsItem *i, scene()->selectedItems()) { if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler *>(i)) { int row = handles.indexOf(handler); @@ -1850,6 +1854,8 @@ void ProfileWidget2::keyDownAction() plannerModel->editStop(row, dp); } } + plannerModel->setRecalc(oldRecalc); + replot(); } void ProfileWidget2::keyUpAction() @@ -1858,6 +1864,7 @@ void ProfileWidget2::keyUpAction() return; DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); + bool oldRecalc = plannerModel->setRecalc(false); Q_FOREACH (QGraphicsItem *i, scene()->selectedItems()) { if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler *>(i)) { int row = handles.indexOf(handler); @@ -1870,6 +1877,8 @@ void ProfileWidget2::keyUpAction() plannerModel->editStop(row, dp); } } + plannerModel->setRecalc(oldRecalc); + replot(); } void ProfileWidget2::keyLeftAction() @@ -1878,6 +1887,7 @@ void ProfileWidget2::keyLeftAction() return; DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); + bool oldRecalc = plannerModel->setRecalc(false); Q_FOREACH (QGraphicsItem *i, scene()->selectedItems()) { if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler *>(i)) { int row = handles.indexOf(handler); @@ -1903,6 +1913,8 @@ void ProfileWidget2::keyLeftAction() plannerModel->editStop(row, dp); } } + plannerModel->setRecalc(oldRecalc); + replot(); } void ProfileWidget2::keyRightAction() @@ -1911,6 +1923,7 @@ void ProfileWidget2::keyRightAction() return; DivePlannerPointsModel *plannerModel = DivePlannerPointsModel::instance(); + bool oldRecalc = plannerModel->setRecalc(false); Q_FOREACH (QGraphicsItem *i, scene()->selectedItems()) { if (DiveHandler *handler = qgraphicsitem_cast<DiveHandler *>(i)) { int row = handles.indexOf(handler); @@ -1935,6 +1948,8 @@ void ProfileWidget2::keyRightAction() plannerModel->editStop(row, dp); } } + plannerModel->setRecalc(oldRecalc); + replot(); } void ProfileWidget2::keyDeleteAction() diff --git a/qt-models/cylindermodel.cpp b/qt-models/cylindermodel.cpp index 3979b13b6..9f34007c7 100644 --- a/qt-models/cylindermodel.cpp +++ b/qt-models/cylindermodel.cpp @@ -648,6 +648,7 @@ bool CylindersModel::updateBestMixes() } /* This slot is called when the bottom pO2 and END preferences are updated, we want to * emit dataChanged so MOD and MND are refreshed, even if the gas mix hasn't been changed */ - emit dataChanged(createIndex(0, 0), createIndex(MAX_CYLINDERS - 1, COLUMNS - 1)); + if (gasUpdated) + emit dataChanged(createIndex(0, 0), createIndex(MAX_CYLINDERS - 1, COLUMNS - 1)); return gasUpdated; } |