make sure SelectionRemove case is handled for selection ops

Also fix formatting for switch/case statements
This commit is contained in:
Paul Davis 2024-08-06 17:36:30 -06:00
parent 15912fea77
commit 21610015ed
2 changed files with 104 additions and 97 deletions

View file

@ -4390,50 +4390,51 @@ MarkerDrag::start_grab (GdkEvent* event, Gdk::Cursor* cursor)
SelectionOperation op = ArdourKeyboard::selection_type (event->button.state); SelectionOperation op = ArdourKeyboard::selection_type (event->button.state);
switch (op) { switch (op) {
case SelectionToggle: case SelectionToggle:
/* we toggle on the button release */ /* we toggle on the button release */
break; break;
case SelectionSet: case SelectionSet:
if (!_editor->selection->selected (_marker)) { if (!_editor->selection->selected (_marker)) {
_editor->selection->set (_marker); _editor->selection->set (_marker);
_selection_changed = true; _selection_changed = true;
} }
break; break;
case SelectionExtend: { case SelectionExtend: {
Locations::LocationList ll; Locations::LocationList ll;
list<ArdourMarker*> to_add; list<ArdourMarker*> to_add;
timepos_t s, e; timepos_t s, e;
_editor->selection->markers.range (s, e); _editor->selection->markers.range (s, e);
s = min (_marker->position (), s); s = min (_marker->position (), s);
e = max (_marker->position (), e); e = max (_marker->position (), e);
s = min (s, e); s = min (s, e);
e = max (s, e); e = max (s, e);
if (e < timepos_t::max (e.time_domain ())) { if (e < timepos_t::max (e.time_domain ())) {
e = e.increment (); e = e.increment ();
} }
_editor->session ()->locations ()->find_all_between (s, e, ll, Location::Flags (0)); _editor->session ()->locations ()->find_all_between (s, e, ll, Location::Flags (0));
for (Locations::LocationList::iterator i = ll.begin (); i != ll.end (); ++i) { for (Locations::LocationList::iterator i = ll.begin (); i != ll.end (); ++i) {
Editor::LocationMarkers* lm = _editor->find_location_markers (*i); Editor::LocationMarkers* lm = _editor->find_location_markers (*i);
if (lm) { if (lm) {
if (lm->start) { if (lm->start) {
to_add.push_back (lm->start); to_add.push_back (lm->start);
} }
if (lm->end) { if (lm->end) {
to_add.push_back (lm->end); to_add.push_back (lm->end);
}
} }
} }
if (!to_add.empty ()) {
_editor->selection->add (to_add);
_selection_changed = true;
}
break;
} }
case SelectionAdd: if (!to_add.empty ()) {
_editor->selection->add (_marker); _editor->selection->add (to_add);
_selection_changed = true; _selection_changed = true;
}
break; break;
}
case SelectionAdd:
_editor->selection->add (_marker);
_selection_changed = true;
break;
default:
break;
} }
/* Set up copies for us to manipulate during the drag /* Set up copies for us to manipulate during the drag
@ -4645,23 +4646,24 @@ MarkerDrag::finished (GdkEvent* event, bool movement_occurred)
SelectionOperation op = ArdourKeyboard::selection_type (event->button.state); SelectionOperation op = ArdourKeyboard::selection_type (event->button.state);
switch (op) { switch (op) {
case SelectionSet: case SelectionSet:
if (_editor->selection->selected (_marker) && _editor->selection->markers.size () > 1) { if (_editor->selection->selected (_marker) && _editor->selection->markers.size () > 1) {
_editor->selection->set (_marker); _editor->selection->set (_marker);
_selection_changed = true;
}
break;
case SelectionToggle:
/* we toggle on the button release, click only */
_editor->selection->toggle (_marker);
_selection_changed = true; _selection_changed = true;
}
break;
break; case SelectionToggle:
/* we toggle on the button release, click only */
_editor->selection->toggle (_marker);
_selection_changed = true;
case SelectionExtend: break;
case SelectionAdd:
break; case SelectionExtend:
case SelectionAdd:
case SelectionRemove:
break;
} }
if (_selection_changed) { if (_selection_changed) {

View file

@ -632,28 +632,31 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it
selectables.push_back (argl->nth (after)); selectables.push_back (argl->nth (after));
switch (op) { switch (op) {
case SelectionSet: case SelectionSet:
if (press) { if (press) {
selection->set (selectables); selection->set (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionAdd: case SelectionAdd:
if (press) { if (press) {
selection->add (selectables); selection->add (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionToggle: case SelectionToggle:
if (press) { if (press) {
selection->toggle (selectables); selection->toggle (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionExtend: case SelectionExtend:
/* XXX */ /* XXX */
break; break;
case SelectionRemove:
/* XXX */
break;
} }
} }
break; break;
@ -678,28 +681,30 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it
selectables.push_back (al->nth (after)); selectables.push_back (al->nth (after));
switch (op) { switch (op) {
case SelectionSet: case SelectionSet:
if (press) { if (press) {
selection->set (selectables); selection->set (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionAdd: case SelectionAdd:
if (press) { if (press) {
selection->add (selectables); selection->add (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionToggle: case SelectionToggle:
if (press) { if (press) {
selection->toggle (selectables); selection->toggle (selectables);
_mouse_changed_selection = true; _mouse_changed_selection = true;
} }
break; break;
case SelectionExtend:
case SelectionExtend: /* XXX */
/* XXX */ break;
break; case SelectionRemove:
/* not relevant */
break;
} }
} }
break; break;