summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-03-05 23:10:44 +0100
committerGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-07 00:13:35 +0200
commite39063f6df269facaad1430229d8b330385f68ff (patch)
tree15be5ecc96553310f11f6d50a6a57452e3ecaf43
parent48b4dc9c845f147d97c6f7e13582b921654a227c (diff)
downloadsubsurface-e39063f6df269facaad1430229d8b330385f68ff.tar.gz
undo: switch to affected dive on undo/redo of event-changes
Select and make current the affected dive. And also switch to the divecomputer that was affected. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--commands/command_event.cpp11
-rw-r--r--commands/command_event.h2
2 files changed, 11 insertions, 2 deletions
diff --git a/commands/command_event.cpp b/commands/command_event.cpp
index 6d217da65..2b9176af5 100644
--- a/commands/command_event.cpp
+++ b/commands/command_event.cpp
@@ -2,6 +2,7 @@
#include "command_event.h"
#include "core/dive.h"
+#include "core/selection.h"
#include "core/subsurface-qt/divelistnotifier.h"
#include "core/libdivecomputer.h"
#include "core/gettextfromc.h"
@@ -17,15 +18,21 @@ EventBase::EventBase(struct dive *dIn, int dcNrIn) :
void EventBase::redo()
{
redoit(); // Call actual function in base class
- invalidate_dive_cache(d);
- emit diveListNotifier.eventsChanged(d);
+ updateDive();
}
void EventBase::undo()
{
undoit(); // Call actual function in base class
+ updateDive();
+}
+
+void EventBase::updateDive()
+{
invalidate_dive_cache(d);
emit diveListNotifier.eventsChanged(d);
+ dc_number = dcNr;
+ setSelection({ d }, d);
}
AddEventBase::AddEventBase(struct dive *d, int dcNr, struct event *ev) : EventBase(d, dcNr),
diff --git a/commands/command_event.h b/commands/command_event.h
index 8e75dee6c..a363540d5 100644
--- a/commands/command_event.h
+++ b/commands/command_event.h
@@ -29,6 +29,8 @@ protected:
// are probably not stable.
struct dive *d;
int dcNr;
+private:
+ void updateDive();
};
class AddEventBase : public EventBase {