fix up ownership of "color mode" which got confused during EditingContext refactor
This commit is contained in:
@@ -126,7 +126,6 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session* sess, ArdourCanva
|
||||
, _piano_roll_header(nullptr)
|
||||
, _note_mode_item(0)
|
||||
, _percussion_mode_item(nullptr)
|
||||
, _color_mode(MeterColors)
|
||||
, _meter_color_mode_item(nullptr)
|
||||
, _channel_color_mode_item(nullptr)
|
||||
, _track_color_mode_item(0)
|
||||
@@ -290,14 +289,10 @@ MidiTimeAxisView::set_route (std::shared_ptr<Route> rt)
|
||||
|
||||
const string color_mode = gui_property ("color-mode");
|
||||
if (!color_mode.empty()) {
|
||||
_color_mode = ColorMode (string_2_enum(color_mode, _color_mode));
|
||||
if (_channel_selector && _color_mode == ChannelColors) {
|
||||
_channel_selector->set_channel_colors(NoteBase::midi_channel_colors);
|
||||
}
|
||||
ColorMode cm;
|
||||
set_color_mode (ColorMode (string_2_enum(color_mode, cm)), true, false);
|
||||
}
|
||||
|
||||
set_color_mode (_color_mode, true, false);
|
||||
|
||||
const string note_mode = gui_property ("note-mode");
|
||||
if (!note_mode.empty()) {
|
||||
NoteMode nm;
|
||||
@@ -659,7 +654,7 @@ MidiTimeAxisView::custom_device_mode_changed(const std::string& mode)
|
||||
}
|
||||
|
||||
MidiStreamView*
|
||||
MidiTimeAxisView::midi_view()
|
||||
MidiTimeAxisView::midi_view() const
|
||||
{
|
||||
return dynamic_cast<MidiStreamView*>(_view);
|
||||
}
|
||||
@@ -766,10 +761,16 @@ MidiTimeAxisView::toggle_restore_pgm_on_load ()
|
||||
void
|
||||
MidiTimeAxisView::toggle_channel_selector ()
|
||||
{
|
||||
if (!midi_view()) {
|
||||
return;
|
||||
}
|
||||
|
||||
ColorMode cm = midi_view()->color_mode();
|
||||
|
||||
if (!_channel_selector) {
|
||||
_channel_selector = new MidiChannelSelectorWindow (midi_track());
|
||||
|
||||
if (_color_mode == ChannelColors) {
|
||||
if (cm == ChannelColors) {
|
||||
_channel_selector->set_channel_colors(NoteBase::midi_channel_colors);
|
||||
} else {
|
||||
_channel_selector->set_default_channel_color ();
|
||||
@@ -1128,27 +1129,30 @@ MidiTimeAxisView::build_color_mode_menu()
|
||||
MenuList& items = mode_menu->items();
|
||||
mode_menu->set_name ("ArdourContextMenu");
|
||||
|
||||
assert (midi_view());
|
||||
ColorMode cm = midi_view()->color_mode ();
|
||||
|
||||
RadioMenuItem::Group mode_group;
|
||||
items.push_back (
|
||||
RadioMenuElem (mode_group, _("Meter Colors"),
|
||||
sigc::bind (sigc::mem_fun (*this, &MidiTimeAxisView::set_color_mode),
|
||||
MeterColors, false, true, true)));
|
||||
_meter_color_mode_item = dynamic_cast<RadioMenuItem*>(&items.back());
|
||||
_meter_color_mode_item->set_active(_color_mode == MeterColors);
|
||||
_meter_color_mode_item->set_active(cm == MeterColors);
|
||||
|
||||
items.push_back (
|
||||
RadioMenuElem (mode_group, _("Channel Colors"),
|
||||
sigc::bind (sigc::mem_fun (*this, &MidiTimeAxisView::set_color_mode),
|
||||
ChannelColors, false, true, true)));
|
||||
_channel_color_mode_item = dynamic_cast<RadioMenuItem*>(&items.back());
|
||||
_channel_color_mode_item->set_active(_color_mode == ChannelColors);
|
||||
_channel_color_mode_item->set_active(cm == ChannelColors);
|
||||
|
||||
items.push_back (
|
||||
RadioMenuElem (mode_group, _("Track Color"),
|
||||
sigc::bind (sigc::mem_fun (*this, &MidiTimeAxisView::set_color_mode),
|
||||
TrackColor, false, true, true)));
|
||||
_channel_color_mode_item = dynamic_cast<RadioMenuItem*>(&items.back());
|
||||
_channel_color_mode_item->set_active(_color_mode == TrackColor);
|
||||
_channel_color_mode_item->set_active(cm == TrackColor);
|
||||
|
||||
return mode_menu;
|
||||
}
|
||||
@@ -1179,21 +1183,23 @@ MidiTimeAxisView::set_color_mode (ColorMode mode, bool force, bool redisplay, bo
|
||||
if (apply_to_selection) {
|
||||
_editor.get_selection().tracks.foreach_midi_time_axis (
|
||||
std::bind (&MidiTimeAxisView::set_color_mode, _1, mode, force, redisplay, false));
|
||||
} else {
|
||||
if (_color_mode == mode && !force) {
|
||||
|
||||
} else if (midi_view()) {
|
||||
|
||||
if (color_mode() == mode && !force) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_channel_selector) {
|
||||
if (mode == ChannelColors) {
|
||||
_channel_selector->set_channel_colors(NoteBase::midi_channel_colors);
|
||||
_channel_selector->set_channel_colors (NoteBase::midi_channel_colors);
|
||||
} else {
|
||||
_channel_selector->set_default_channel_color();
|
||||
}
|
||||
}
|
||||
|
||||
_color_mode = mode;
|
||||
set_gui_property ("color-mode", enum_2_string(_color_mode));
|
||||
midi_view()->set_color_mode (mode);
|
||||
set_gui_property ("color-mode", enum_2_string(color_mode()));
|
||||
if (redisplay) {
|
||||
_view->redisplay_track();
|
||||
}
|
||||
@@ -1818,3 +1824,13 @@ MidiTimeAxisView::create_velocity_automation_child (Evoral::Parameter const &, b
|
||||
|
||||
add_automation_child (Evoral::Parameter(MidiVelocityAutomation), velocity_track, show);
|
||||
}
|
||||
|
||||
ARDOUR::ColorMode
|
||||
MidiTimeAxisView::color_mode() const
|
||||
{
|
||||
if (midi_view()) {
|
||||
return midi_view()->color_mode();
|
||||
}
|
||||
|
||||
return ARDOUR::TrackColor;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
|
||||
void set_route (std::shared_ptr<ARDOUR::Route>);
|
||||
|
||||
MidiStreamView* midi_view();
|
||||
MidiStreamView* midi_view() const;
|
||||
|
||||
void set_height (uint32_t, TrackHeightMode m = OnlySelf, bool from_idle = false);
|
||||
void set_layer_display (LayerDisplay d);
|
||||
@@ -97,8 +97,7 @@ public:
|
||||
|
||||
bool paste (Temporal::timepos_t const &, const Selection&, PasteContext& ctx);
|
||||
|
||||
// ARDOUR::NoteMode note_mode() const { return _note_mode; }
|
||||
ARDOUR::ColorMode color_mode() const { return _color_mode; }
|
||||
ARDOUR::ColorMode color_mode() const;
|
||||
|
||||
Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter);
|
||||
|
||||
@@ -155,7 +154,6 @@ private:
|
||||
PianoRollHeader* _piano_roll_header;
|
||||
Gtk::RadioMenuItem* _note_mode_item;
|
||||
Gtk::RadioMenuItem* _percussion_mode_item;
|
||||
ARDOUR::ColorMode _color_mode;
|
||||
Gtk::RadioMenuItem* _meter_color_mode_item;
|
||||
Gtk::RadioMenuItem* _channel_color_mode_item;
|
||||
Gtk::RadioMenuItem* _track_color_mode_item;
|
||||
|
||||
@@ -81,6 +81,12 @@ MidiViewBackground::color_handler ()
|
||||
setup_note_lines ();
|
||||
}
|
||||
|
||||
void
|
||||
MidiViewBackground::set_color_mode (ARDOUR::ColorMode cm)
|
||||
{
|
||||
_color_mode = cm;
|
||||
}
|
||||
|
||||
uint8_t
|
||||
MidiViewBackground::y_to_note (int y) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user