diff options
author | nick_m <mainsbridge@gmail.com> | 2016-12-23 02:55:51 +1100 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-12-23 02:55:51 +1100 |
commit | 37e858da7dbf645900a596c765ff4d58b8b6df3d (patch) | |
tree | 1028d8ec36e45e3825489b846e8c2034357442df /gtk2_ardour/ghostregion.cc | |
parent | 96048ad4c09aca166dcccce9abe91da209a09b93 (diff) |
only update GhostEvents on visible trackviews.
- this requires that MidiGhostRegion::update_contents_height()
also controls visibility.
Diffstat (limited to 'gtk2_ardour/ghostregion.cc')
-rw-r--r-- | gtk2_ardour/ghostregion.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index 1da70631f7..d9b267cfd7 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -305,14 +305,18 @@ MidiGhostRegion::update_contents_height () uint8_t const note_num = (*it).second->event->note()->note(); double const y = note_y(trackview, mv, note_num); - - if ((_tmp_rect = dynamic_cast<ArdourCanvas::Rectangle*>((*it).second->item))) { - _tmp_rect->set (ArdourCanvas::Rect (_tmp_rect->x0(), y, _tmp_rect->x1(), y + h)); - } else if ((_tmp_poly = dynamic_cast<ArdourCanvas::Polygon*>((*it).second->item))) { - Duple position = _tmp_poly->position(); - position.y = y; - _tmp_poly->set_position(position); - _tmp_poly->set(Hit::points(h)); + if (note_num < mv->lowest_note() || note_num > mv->highest_note()) { + (*it).second->item->hide(); + } else { + if ((_tmp_rect = dynamic_cast<ArdourCanvas::Rectangle*>((*it).second->item))) { + _tmp_rect->set (ArdourCanvas::Rect (_tmp_rect->x0(), y, _tmp_rect->x1(), y + h)); + } else if ((_tmp_poly = dynamic_cast<ArdourCanvas::Polygon*>((*it).second->item))) { + Duple position = _tmp_poly->position(); + position.y = y; + _tmp_poly->set_position(position); + _tmp_poly->set(Hit::points(h)); + } + (*it).second->item->show(); } } } |