summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ghostregion.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-12-23 02:55:51 +1100
committernick_m <mainsbridge@gmail.com>2016-12-23 02:55:51 +1100
commit37e858da7dbf645900a596c765ff4d58b8b6df3d (patch)
tree1028d8ec36e45e3825489b846e8c2034357442df /gtk2_ardour/ghostregion.cc
parent96048ad4c09aca166dcccce9abe91da209a09b93 (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.cc20
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();
}
}
}