summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/command_private.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-06-23 12:46:42 +0200
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-06-23 20:08:46 +0200
commit2e230da3610dd1fc61badaf328a084512895fb90 (patch)
tree9f44691f588c3a1d846da5318e6e4148b95a6ef9 /desktop-widgets/command_private.cpp
parent4716c820322dd654e43dc47087866b066b2e5910 (diff)
downloadsubsurface-2e230da3610dd1fc61badaf328a084512895fb90.tar.gz
Cleanup: unify selection signals
For historic reasons, there where three distinct signals concerning dive-selection from the undo-machinery: 1) divesSelected: sent newly selected dives 2) currentDiveChanged: sent if the current dive changed 3) selectionChanged: sent at the end of a command if either the selection or the current dive changed Since now the undo-commands do a full reset of the selection, merge these three signals into a single signal. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_private.cpp')
-rw-r--r--desktop-widgets/command_private.cpp34
1 files changed, 8 insertions, 26 deletions
diff --git a/desktop-widgets/command_private.cpp b/desktop-widgets/command_private.cpp
index 0dfd5eea4..714ffd9b6 100644
--- a/desktop-widgets/command_private.cpp
+++ b/desktop-widgets/command_private.cpp
@@ -53,7 +53,6 @@ void setSelection(const std::vector<dive *> &selection, dive *currentDive)
int i;
dive *d;
amount_selected = 0; // We recalculate amount_selected
- bool selectionChanged = false;
for_each_dive(i, d) {
// We only modify dives that are currently visible.
if (d->hidden_by_filter) {
@@ -75,36 +74,19 @@ void setSelection(const std::vector<dive *> &selection, dive *currentDive)
// don't want, as we set it later anyway.
// There is other parts of the C++ code that touches the innards directly, but
// ultimately this should be pushed down to C.
- selectionChanged |= d->selected != newState;
d->selected = newState;
}
- // Send the select and deselect signals
- emit diveListNotifier.divesSelected(divesToSelect);
-
- bool currentDiveChanged = false;
- if (!currentDive) {
- // If currentDive is null, we have no current dive. In such a case always
- // notify the frontend.
- currentDiveChanged = true;
- emit diveListNotifier.currentDiveChanged();
- } else if (current_dive != currentDive) {
- currentDiveChanged = true;
-
- // We cannot simply change the currentd dive to the given dive.
- // It might be hidden by a filter and thus not be selected.
- if (currentDive->selected)
- // Current dive is visible and selected. Excellent.
- current_dive = currentDive;
- else
- // Current not visible -> find a different dive.
- setClosestCurrentDive(currentDive->when, selection);
- emit diveListNotifier.currentDiveChanged();
+ // We cannot simply change the current dive to the given dive.
+ // It might be hidden by a filter and thus not be selected.
+ current_dive = currentDive;
+ if (current_dive && !currentDive->selected) {
+ // Current not visible -> find a different dive.
+ setClosestCurrentDive(currentDive->when, selection);
}
- // If the selection changed -> tell the frontend
- if (selectionChanged || currentDiveChanged)
- emit diveListNotifier.selectionChanged();
+ // Send the new selection
+ emit diveListNotifier.divesSelected(divesToSelect, current_dive);
}
// Turn current selection into a vector.