prevent suggestion that MIDI tracks can be set to stacked view
This commit is contained in:
parent
34da2896c6
commit
d29f6bde5e
|
@ -242,6 +242,16 @@ MidiStreamView::update_data_note_range(uint8_t min, uint8_t max)
|
|||
return dirty;
|
||||
}
|
||||
|
||||
void
|
||||
MidiStreamView::set_layer_display (LayerDisplay d)
|
||||
{
|
||||
if (d != Overlaid) {
|
||||
return;
|
||||
}
|
||||
|
||||
StreamView::set_layer_display (d);
|
||||
}
|
||||
|
||||
void
|
||||
MidiStreamView::redisplay_track ()
|
||||
{
|
||||
|
|
|
@ -77,6 +77,8 @@ class MidiStreamView : public StreamView
|
|||
|
||||
void update_note_range(uint8_t note_num);
|
||||
|
||||
void set_layer_display (LayerDisplay);
|
||||
bool can_change_layer_display() const { return false; }
|
||||
void redisplay_track ();
|
||||
|
||||
inline double contents_height() const
|
||||
|
|
|
@ -632,21 +632,27 @@ RouteTimeAxisView::build_display_menu ()
|
|||
|
||||
int overlaid = 0;
|
||||
int stacked = 0;
|
||||
int unchangeable = 0;
|
||||
TrackSelection const & s = _editor.get_selection().tracks;
|
||||
|
||||
for (TrackSelection::const_iterator i = s.begin(); i != s.end(); ++i) {
|
||||
StreamView* v = (*i)->view ();
|
||||
if (!v) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (v->layer_display ()) {
|
||||
case Overlaid:
|
||||
++overlaid;
|
||||
break;
|
||||
case Stacked:
|
||||
case Expanded:
|
||||
++stacked;
|
||||
break;
|
||||
if (v->can_change_layer_display()) {
|
||||
switch (v->layer_display ()) {
|
||||
case Overlaid:
|
||||
++overlaid;
|
||||
break;
|
||||
case Stacked:
|
||||
case Expanded:
|
||||
++stacked;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
unchangeable++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -664,12 +670,20 @@ RouteTimeAxisView::build_display_menu ()
|
|||
i->set_inconsistent (overlaid != 0 && stacked != 0);
|
||||
i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::set_layer_display), Overlaid, true));
|
||||
|
||||
if (unchangeable) {
|
||||
i->set_sensitive (false);
|
||||
}
|
||||
|
||||
layers_items.push_back (RadioMenuElem (layers_group, _("Stacked")));
|
||||
i = dynamic_cast<RadioMenuItem*> (&layers_items.back ());
|
||||
i->set_active (overlaid == 0 && stacked != 0);
|
||||
i->set_inconsistent (overlaid != 0 && stacked != 0);
|
||||
i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &RouteTimeAxisView::set_layer_display), Stacked, true));
|
||||
|
||||
if (unchangeable) {
|
||||
i->set_sensitive (false);
|
||||
}
|
||||
|
||||
_ignore_set_layer_display = false;
|
||||
|
||||
items.push_back (MenuElem (_("Layers"), *layers_menu));
|
||||
|
|
|
@ -76,7 +76,8 @@ public:
|
|||
virtual int set_samples_per_pixel (double);
|
||||
gdouble get_samples_per_pixel () const { return _samples_per_pixel; }
|
||||
|
||||
void set_layer_display (LayerDisplay);
|
||||
virtual void set_layer_display (LayerDisplay);
|
||||
virtual bool can_change_layer_display() const { return true; }
|
||||
LayerDisplay layer_display () const { return _layer_display; }
|
||||
|
||||
ArdourCanvas::Container* canvas_item() { return _canvas_group; }
|
||||
|
|
Loading…
Reference in New Issue
Block a user