/* Make sure we have auto loop and auto punch ranges */
Location* loc = _session->locations()->auto_loop_location();
- if (loc == 0) {
- loc = new Location (*_session, 0, _session->current_end_frame(), _("Loop"),(Location::Flags) (Location::IsAutoLoop | Location::IsHidden));
-
- if (loc->start() == loc->end()) {
- loc->set_end (loc->start() + 1);
- }
-
- _session->locations()->add (loc, false);
- _session->set_auto_loop_location (loc);
- } else {
- // force name
+ if (loc != 0) {
loc->set_name (_("Loop"));
}
loc = _session->locations()->auto_punch_location();
-
- if (loc == 0) {
- loc = new Location (*_session, 0, _session->current_end_frame(), _("Punch"), (Location::Flags) (Location::IsAutoPunch | Location::IsHidden));
-
- if (loc->start() == loc->end()) {
- loc->set_end (loc->start() + 1);
- }
-
- _session->locations()->add (loc, false);
- _session->set_auto_punch_location (loc);
- } else {
+ if (loc != 0) {
// force name
loc->set_name (_("Punch"));
}
have_pending_keyboard_selection = false;
}
- update_loop_range_view (true);
+ update_loop_range_view ();
}
/* UNDO/REDO */
Location* loc = new Location (*_session, start, end, _("Punch"), Location::IsAutoPunch);
XMLNode &before = _session->locations()->get_state();
_session->locations()->add (loc, true);
- _session->set_auto_loop_location (loc);
+ _session->set_auto_punch_location (loc);
XMLNode &after = _session->locations()->get_state();
_session->add_command (new MementoCommand<Locations>(*(_session->locations()), &before, &after));
}
void marker_menu_zoom_to_range ();
void new_transport_marker_menu_set_loop ();
void new_transport_marker_menu_set_punch ();
- void update_loop_range_view (bool visibility=false);
- void update_punch_range_view (bool visibility=false);
+ void update_loop_range_view ();
+ void update_punch_range_view ();
void new_transport_marker_menu_popdown ();
void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
void tempo_or_meter_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
ENSURE_GUI_THREAD (*this, &Editor::parameter_changed, p)
if (p == "auto-loop") {
- update_loop_range_view (true);
+ update_loop_range_view ();
} else if (p == "punch-in") {
- update_punch_range_view (true);
+ update_punch_range_view ();
} else if (p == "punch-out") {
- update_punch_range_view (true);
+ update_punch_range_view ();
} else if (p == "timecode-format") {
update_just_timecode ();
} else if (p == "show-region-fades") {
/* Do a full update of the markers in this group */
update_marker_labels (group);
+
+ if (location->is_auto_punch()) {
+ update_punch_range_view ();
+ }
+
+ if (location->is_auto_loop()) {
+ update_loop_range_view ();
+ }
}
/** Add a new location, without a time-consuming update of all marker labels;
i = tmp;
}
- update_punch_range_view (false);
- update_loop_range_view (false);
+ update_punch_range_view ();
+ update_loop_range_view ();
}
void
LocationMarkerMap::iterator i;
if (location == transport_loop_location()) {
- update_loop_range_view (true);
+ update_loop_range_view ();
}
if (location == transport_punch_location()) {
- update_punch_range_view (true);
+ update_punch_range_view ();
}
for (i = location_markers.begin(); i != location_markers.end(); ++i) {
}
void
-Editor::update_loop_range_view (bool visibility)
+Editor::update_loop_range_view ()
{
if (_session == 0) {
return;
transport_loop_range_rect->set_x0 (x1);
transport_loop_range_rect->set_x1 (x2);
- if (visibility) {
- transport_loop_range_rect->show();
- }
-
- } else if (visibility) {
+ transport_loop_range_rect->show();
+
+ } else {
transport_loop_range_rect->hide();
}
}
void
-Editor::update_punch_range_view (bool visibility)
+Editor::update_punch_range_view ()
{
if (_session == 0) {
return;
if ((_session->config.get_punch_in() || _session->config.get_punch_out()) && ((tpl = transport_punch_location()) != 0)) {
ArdourCanvas::Rect const v = _track_canvas->visible_area ();
+
if (_session->config.get_punch_in()) {
transport_punch_range_rect->set_x0 (sample_to_pixel (tpl->start()));
transport_punch_range_rect->set_x1 (_session->config.get_punch_out() ? sample_to_pixel (tpl->end()) : sample_to_pixel (JACK_MAX_FRAMES));
transport_punch_range_rect->set_x0 (0);
transport_punch_range_rect->set_x1 (_session->config.get_punch_out() ? sample_to_pixel (tpl->end()) : v.width ());
}
+
+ transport_punch_range_rect->show();
+
+ } else {
- if (visibility) {
- transport_punch_range_rect->show();
- }
- } else if (visibility) {
transport_punch_range_rect->hide();
}
}