diff options
author | nick_m <mainsbridge@gmail.com> | 2016-12-23 05:07:22 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-12-23 05:07:22 +1100 |
commit | ddd085cf4e4e626d4622e9ac42cc3096707905d8 (patch) | |
tree | 338713cecdadd2cafec5d2011b0fcd4ad901dd4e /gtk2_ardour/ghostregion.cc | |
parent | 37e858da7dbf645900a596c765ff4d58b8b6df3d (diff) |
hide ghost events appropriately (e.g. after split).
Diffstat (limited to 'gtk2_ardour/ghostregion.cc')
-rw-r--r-- | gtk2_ardour/ghostregion.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index d9b267cfd7..843fa57706 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -336,8 +336,9 @@ MidiGhostRegion::add_note (NoteBase* n) uint8_t const note_num = n->note()->note(); double const h = note_height(trackview, mv); double const y = note_y(trackview, mv, note_num); - - if (note_num < mv->lowest_note() || note_num > mv->highest_note()) { + if (n->x0() < base_rect->x0() || n->x1() > base_rect->x1()) { + event->item->hide(); + } else if (note_num < mv->lowest_note() || note_num > mv->highest_note()) { event->item->hide(); } else { if ((_tmp_rect = dynamic_cast<ArdourCanvas::Rectangle*>(event->item))) { @@ -367,7 +368,7 @@ MidiGhostRegion::clear_events() * @param parent The CanvasNote from the parent MidiRegionView. */ void -MidiGhostRegion::update_note (Note* note) +MidiGhostRegion::update_note (Note* note, bool hide) { MidiStreamView* mv = midi_view(); @@ -386,7 +387,7 @@ MidiGhostRegion::update_note (Note* note) double const y = note_y(trackview, mv, note_num); double const h = note_height(trackview, mv); - if (note_num < mv->lowest_note() || note_num > mv->highest_note()) { + if (hide || note_num < mv->lowest_note() || note_num > mv->highest_note()) { ev->item->hide(); } else { if ((_tmp_rect = dynamic_cast<ArdourCanvas::Rectangle*>(ev->item))) { @@ -400,7 +401,7 @@ MidiGhostRegion::update_note (Note* note) * @param hit The CanvasHit from the parent MidiRegionView. */ void -MidiGhostRegion::update_hit (Hit* hit) +MidiGhostRegion::update_hit (Hit* hit, bool hide) { MidiStreamView* mv = midi_view(); @@ -418,7 +419,7 @@ MidiGhostRegion::update_hit (Hit* hit) double const h = note_height(trackview, mv); double const y = note_y(trackview, mv, note_num); - if (note_num < mv->lowest_note() || note_num > mv->highest_note()) { + if (hide || note_num < mv->lowest_note() || note_num > mv->highest_note()) { ev->item->hide(); } else { if ((_tmp_poly = dynamic_cast<ArdourCanvas::Polygon*>(ev->item))) { |