When tabbing between notes in a MIDI region view, only consider those that are being displayed according to the channel selector. Should avoid confusions such as that in #3976.
git-svn-id: svn://localhost/ardour2/branches/3.0@10614 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
782c9383fc
commit
a7fd6e2925
@ -3281,11 +3281,15 @@ MidiRegionView::goto_next_note (bool add_to_selection)
|
|||||||
|
|
||||||
time_sort_events ();
|
time_sort_events ();
|
||||||
|
|
||||||
|
MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
|
||||||
|
uint16_t const channel_mask = mtv->channel_selector().get_selected_channels ();
|
||||||
|
|
||||||
for (Events::iterator i = _events.begin(); i != _events.end(); ++i) {
|
for (Events::iterator i = _events.begin(); i != _events.end(); ++i) {
|
||||||
if ((*i)->selected()) {
|
if ((*i)->selected()) {
|
||||||
use_next = true;
|
use_next = true;
|
||||||
continue;
|
continue;
|
||||||
} else if (use_next) {
|
} else if (use_next) {
|
||||||
|
if (channel_mask & (1 << (*i)->note()->channel())) {
|
||||||
if (!add_to_selection) {
|
if (!add_to_selection) {
|
||||||
unique_select (*i);
|
unique_select (*i);
|
||||||
} else {
|
} else {
|
||||||
@ -3294,11 +3298,13 @@ MidiRegionView::goto_next_note (bool add_to_selection)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* use the first one */
|
/* use the first one */
|
||||||
|
|
||||||
|
if (!_event.empty() && (channel_mask & (1 << _events.front()->note()->channel ()))) {
|
||||||
unique_select (_events.front());
|
unique_select (_events.front());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -3312,11 +3318,15 @@ MidiRegionView::goto_previous_note (bool add_to_selection)
|
|||||||
|
|
||||||
time_sort_events ();
|
time_sort_events ();
|
||||||
|
|
||||||
|
MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(&trackview);
|
||||||
|
uint16_t const channel_mask = mtv->channel_selector().get_selected_channels ();
|
||||||
|
|
||||||
for (Events::reverse_iterator i = _events.rbegin(); i != _events.rend(); ++i) {
|
for (Events::reverse_iterator i = _events.rbegin(); i != _events.rend(); ++i) {
|
||||||
if ((*i)->selected()) {
|
if ((*i)->selected()) {
|
||||||
use_next = true;
|
use_next = true;
|
||||||
continue;
|
continue;
|
||||||
} else if (use_next) {
|
} else if (use_next) {
|
||||||
|
if (channel_mask & (1 << (*i)->note()->channel())) {
|
||||||
if (!add_to_selection) {
|
if (!add_to_selection) {
|
||||||
unique_select (*i);
|
unique_select (*i);
|
||||||
} else {
|
} else {
|
||||||
@ -3325,11 +3335,14 @@ MidiRegionView::goto_previous_note (bool add_to_selection)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* use the last one */
|
/* use the last one */
|
||||||
|
|
||||||
|
if (!_events.empty() && (channel_mask & (1 << (*_events.rbegin())->note()->channel ()))) {
|
||||||
unique_select (*(_events.rbegin()));
|
unique_select (*(_events.rbegin()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MidiRegionView::selection_as_notelist (Notes& selected, bool allow_all_if_none_selected)
|
MidiRegionView::selection_as_notelist (Notes& selected, bool allow_all_if_none_selected)
|
||||||
|
Loading…
Reference in New Issue
Block a user