summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/command_divelist.cpp10
-rw-r--r--desktop-widgets/command_divelist.h3
2 files changed, 8 insertions, 5 deletions
diff --git a/desktop-widgets/command_divelist.cpp b/desktop-widgets/command_divelist.cpp
index 4bbe1057d..d2cd0a413 100644
--- a/desktop-widgets/command_divelist.cpp
+++ b/desktop-widgets/command_divelist.cpp
@@ -802,7 +802,8 @@ SplitDiveComputer::SplitDiveComputer(dive *d, int dc_num) : SplitDivesBase(d, sp
setText(tr("split dive computer"));
}
-DiveComputerBase::DiveComputerBase(dive *old_dive, dive *new_dive)
+DiveComputerBase::DiveComputerBase(dive *old_dive, dive *new_dive, int dc_nr_after_in) : dc_nr_before(dc_number),
+ dc_nr_after(dc_nr_after_in)
{
if (!new_dive)
return;
@@ -840,7 +841,8 @@ void DiveComputerBase::redoit()
restoreSelection(diveToRemove.dives, diveToRemove.dives[0]);
// Update the profile to show the first dive computer
- dc_number = 0;
+ dc_number = dc_nr_after;
+ std::swap(dc_nr_before, dc_nr_after);
MainWindow::instance()->graphics->replot(current_dive);
}
@@ -851,13 +853,13 @@ void DiveComputerBase::undoit()
}
MoveDiveComputerToFront::MoveDiveComputerToFront(dive *d, int dc_num)
- : DiveComputerBase(d, make_first_dc(d, dc_num))
+ : DiveComputerBase(d, make_first_dc(d, dc_num), 0)
{
setText(tr("move dive computer to front"));
}
DeleteDiveComputer::DeleteDiveComputer(dive *d, int dc_num)
- : DiveComputerBase(d, clone_delete_divecomputer(d, dc_num))
+ : DiveComputerBase(d, clone_delete_divecomputer(d, dc_num), std::min(count_divecomputers(d) - 1, dc_num))
{
setText(tr("delete dive computer"));
}
diff --git a/desktop-widgets/command_divelist.h b/desktop-widgets/command_divelist.h
index 7de168e9a..152c7365b 100644
--- a/desktop-widgets/command_divelist.h
+++ b/desktop-widgets/command_divelist.h
@@ -244,7 +244,7 @@ class DiveComputerBase : public DiveListBase {
protected:
// old_dive must be a dive known to the core.
// new_dive must be new dive whose ownership is taken.
- DiveComputerBase(dive *old_dive, dive *new_dive);
+ DiveComputerBase(dive *old_dive, dive *new_dive, int dc_nr_after);
private:
void undoit() override;
void redoit() override;
@@ -254,6 +254,7 @@ protected:
// For redo and undo
DivesAndTripsToAdd diveToAdd;
DivesAndSitesToRemove diveToRemove;
+ int dc_nr_before, dc_nr_after;
};
class MoveDiveComputerToFront : public DiveComputerBase {