diff options
Diffstat (limited to 'gtk2_ardour/editor_markers.cc')
-rw-r--r-- | gtk2_ardour/editor_markers.cc | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 120a6371c0..81ad022ce0 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -101,6 +101,11 @@ Editor::add_new_location (Location *location) lam->end = new Marker (*this, *transport_marker_group, color, location->name(), Marker::PunchOut, location->end()); + } else if (location->is_session_range()) { + // session range + lam->start = new Marker (*this, *marker_group, color, _("start"), Marker::Start, location->start()); + lam->end = new Marker (*this, *marker_group, color, _("end"), Marker::End, location->end()); + } else { // range marker if (location->is_cd_marker() && ruler_cd_marker_action->get_active()) { @@ -110,7 +115,6 @@ Editor::add_new_location (Location *location) location->name(), Marker::End, location->end()); } else { - lam->start = new Marker (*this, *range_marker_group, color, location->name(), Marker::Start, location->start()); lam->end = new Marker (*this, *range_marker_group, color, @@ -155,7 +159,7 @@ Editor::location_changed (Location *location) return; } - lam->set_name (location->name()); + lam->set_name (location->name ()); lam->set_position (location->start(), location->end()); if (location->is_auto_loop()) { @@ -365,8 +369,15 @@ Editor::LocationMarkers::show() void Editor::LocationMarkers::set_name (const string& str) { - start->set_name (str); - if (end) { end->set_name (str); } + /* XXX: hack: don't change names of session start/end markers */ + + if (start->type() != Marker::Start) { + start->set_name (str); + } + + if (end && end->type() != Marker::End) { + end->set_name (str); + } } void @@ -510,12 +521,12 @@ Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item) } else { if (loc->is_mark()) { - bool start_or_end = loc->is_start() || loc->is_end(); Menu *markerMenu; - if (start_or_end) { - if (start_end_marker_menu == 0) + if (loc->is_session_range ()) { + if (session_range_marker_menu == 0) { build_marker_menu (true); - markerMenu = start_end_marker_menu; + } + markerMenu = session_range_marker_menu; } else { if (marker_menu == 0) build_marker_menu (false); @@ -573,13 +584,13 @@ Editor::transport_marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item*) } void -Editor::build_marker_menu (bool start_or_end) +Editor::build_marker_menu (bool session_range) { using namespace Menu_Helpers; Menu *markerMenu = new Menu; - if (start_or_end) { - start_end_marker_menu = markerMenu; + if (session_range) { + session_range_marker_menu = markerMenu; } else { marker_menu = markerMenu; } @@ -595,7 +606,9 @@ Editor::build_marker_menu (bool start_or_end) items.push_back (MenuElem (_("Create range to next marker"), sigc::mem_fun(*this, &Editor::marker_menu_range_to_next))); items.push_back (MenuElem (_("Hide"), sigc::mem_fun(*this, &Editor::marker_menu_hide))); - if (start_or_end) return; + if (session_range) { + return; + } items.push_back (MenuElem (_("Rename"), sigc::mem_fun(*this, &Editor::marker_menu_rename))); items.push_back (MenuElem (_("Lock"), sigc::bind (sigc::mem_fun(*this, &Editor::marker_menu_lock), true))); items.push_back (MenuElem (_("Unlock"), sigc::bind (sigc::mem_fun(*this, &Editor::marker_menu_lock), false))); @@ -1203,7 +1216,7 @@ Editor::goto_nth_marker (int n) ordered.sort (cmp); for (Locations::LocationList::iterator i = ordered.begin(); n >= 0 && i != ordered.end(); ++i) { - if ((*i)->is_mark() && !(*i)->is_hidden() && !(*i)->is_start()) { + if ((*i)->is_mark() && !(*i)->is_hidden() && !(*i)->is_session_range()) { if (n == 0) { _session->request_locate ((*i)->start(), _session->transport_rolling()); break; |