mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: make profile-editing undoable
Recently, undo of dive-replanning was introduced. Therefore, it appears logical to do the same thing for editing of the profile of manually added dives. For now, use the same undo-command, just change the displayed text from "replan dive" to "edit profile". Move the fixup dive call into the undo-command. Eventually, every action on the profile should be made undoable. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
7c024f12d2
commit
a6fa6cdb41
5 changed files with 17 additions and 22 deletions
|
@ -529,8 +529,6 @@ void MainTab::refreshDisplayedDiveSite()
|
|||
|
||||
void MainTab::acceptChanges()
|
||||
{
|
||||
int addedId = -1;
|
||||
|
||||
if (ui.location->hasFocus())
|
||||
stealFocus();
|
||||
|
||||
|
@ -541,33 +539,18 @@ void MainTab::acceptChanges()
|
|||
ui.dateEdit->setEnabled(true);
|
||||
hideMessage();
|
||||
|
||||
if (lastMode == MANUALLY_ADDED_DIVE) {
|
||||
// preserve any changes to the profile
|
||||
free(current_dive->dc.sample);
|
||||
copy_samples(&displayed_dive.dc, ¤t_dive->dc);
|
||||
addedId = displayed_dive.id;
|
||||
}
|
||||
|
||||
// TODO: This is a temporary hack until the equipment tab is included in the undo system:
|
||||
// The equipment tab is hardcoded at the first place of the "extra widgets".
|
||||
((TabDiveEquipment *)extraWidgets[0])->acceptChanges();
|
||||
|
||||
if (lastMode == MANUALLY_ADDED_DIVE) {
|
||||
// we just added or edited the dive, let fixup_dive() make
|
||||
// sure we get the max. depth right
|
||||
current_dive->maxdepth.mm = current_dc->maxdepth.mm = 0;
|
||||
fixup_dive(current_dive);
|
||||
set_dive_nr_for_current_dive();
|
||||
MainWindow::instance()->showProfile();
|
||||
mark_divelist_changed(true);
|
||||
DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::NOTHING);
|
||||
Command::editProfile(&displayed_dive);
|
||||
}
|
||||
int scrolledBy = MainWindow::instance()->diveList->verticalScrollBar()->sliderPosition();
|
||||
if (lastMode == MANUALLY_ADDED_DIVE) {
|
||||
MainWindow::instance()->diveList->reload();
|
||||
int newDiveNr = get_divenr(get_dive_by_uniq_id(addedId));
|
||||
MainWindow::instance()->diveList->unselectDives();
|
||||
MainWindow::instance()->diveList->selectDive(newDiveNr, true);
|
||||
MainWindow::instance()->refreshDisplay();
|
||||
MainWindow::instance()->graphics->replot();
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue