diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2020-04-30 21:23:15 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-04-30 14:14:13 -0700 |
commit | 60b00162a9cc666a1af062d2610f28cfe7df09ae (patch) | |
tree | 8e1b0ff5f626af3e595c3eb1dc1ca33370691333 /desktop-widgets | |
parent | ff0438a3fd25febfd8fc3ef362bbc2c2192f0006 (diff) | |
download | subsurface-60b00162a9cc666a1af062d2610f28cfe7df09ae.tar.gz |
desktop: don't replot profile when populating dive information tab
When the dive mode is changed, the profile has to be replot. This
is by a function of the TabDiveInformation. However, that function
was also executed when populating the tab. Thus, when changing dive,
the profile was plot twice.
Move the profile plotting out of the function. Ultimately, the profile
should listen to the appropriate signals itself.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r-- | desktop-widgets/tab-widgets/TabDiveInformation.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/desktop-widgets/tab-widgets/TabDiveInformation.cpp b/desktop-widgets/tab-widgets/TabDiveInformation.cpp index f787c922e..8a6739627 100644 --- a/desktop-widgets/tab-widgets/TabDiveInformation.cpp +++ b/desktop-widgets/tab-widgets/TabDiveInformation.cpp @@ -316,6 +316,7 @@ void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField fi if (!current_dive || !dives.contains(current_dive)) return; + bool replot = false; if (field.visibility) ui->visibility->setCurrentStars(current_dive->visibility); if (field.wavesize) @@ -326,8 +327,10 @@ void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField fi ui->surge->setCurrentStars(current_dive->surge); if (field.chill) ui->chill->setCurrentStars(current_dive->chill); - if (field.mode) + if (field.mode) { updateMode(current_dive); + replot = true; + } if (field.duration || field.depth || field.mode) updateProfile(); if (field.air_temp) @@ -344,6 +347,10 @@ void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField fi salinity_value = current_dive->salinity; ui->waterTypeCombo->setCurrentIndex(updateSalinityComboIndex(salinity_value)); ui->salinityText->setText(QString("%1g/ℓ").arg(salinity_value / 10.0)); + // TODO: The profile should recognize itself when the dive mode changed. + // It seem awkward to route this via the dive-information tab. + if (replot) + MainWindow::instance()->graphics->replot(); } void TabDiveInformation::on_visibility_valueChanged(int value) @@ -379,7 +386,6 @@ void TabDiveInformation::on_chill_valueChanged(int value) void TabDiveInformation::updateMode(struct dive *d) { ui->diveType->setCurrentIndex(get_dive_dc(d, dc_number)->divemode); - MainWindow::instance()->graphics->replot(); } void TabDiveInformation::diveModeChanged(int index) |