#include "ardour/midi_track.h"
#include "ardour/operations.h"
#include "ardour/playlist_factory.h"
+#include "ardour/profile.h"
#include "ardour/quantize.h"
#include "ardour/region_factory.h"
#include "ardour/reverse.h"
RegionSelection pre_selected_regions = selection->regions;
bool working_on_selection = !pre_selected_regions.empty();
-
+
list<boost::shared_ptr<Playlist> > used_playlists;
list<RouteTimeAxisView*> used_trackviews;
EditorThaw(); /* Emit Signal */
}
- //IFF we were working on selected regions, try to reinstate the other region selections that existed before the freeze/thaw.
- _ignore_follow_edits = true; //a split will change the region selection in mysterious ways; its not practical or wanted to follow this edit
- if( working_on_selection ) {
- selection->add ( pre_selected_regions );
- selection->add (latest_regionviews); //these are the new regions created after the split
+ if (ARDOUR::Profile->get_mixbus()) {
+ //IFF we were working on selected regions, try to reinstate the other region selections that existed before the freeze/thaw.
+ _ignore_follow_edits = true; //a split will change the region selection in mysterious ways; its not practical or wanted to follow this edit
+ if( working_on_selection ) {
+ selection->add ( pre_selected_regions );
+ selection->add (latest_regionviews); //these are the new regions created after the split
+ }
+ _ignore_follow_edits = false;
}
- _ignore_follow_edits = false;
-
}
/** Move one extreme of the current range selection. If more than one range is selected,
*/
GdkScreen* screen = gdk_screen_get_default ();
- gint pixwidth = gdk_screen_get_width (screen);
- gint mmwidth = gdk_screen_get_width_mm (screen);
- double pix_per_mm = (double) pixwidth/ (double) mmwidth;
- double one_centimeter_in_pixels = pix_per_mm * 10.0;
+ const gint pixwidth = gdk_screen_get_width (screen);
+ const gint mmwidth = gdk_screen_get_width_mm (screen);
+ const double pix_per_mm = (double) pixwidth/ (double) mmwidth;
+ const double one_centimeter_in_pixels = pix_per_mm * 10.0;
- framepos_t range = end - start;
- double new_fpp = (double) range / (double) _visible_canvas_width;
- framepos_t extra_samples = (framepos_t) floor (one_centimeter_in_pixels * new_fpp);
+ const framepos_t range = end - start;
+ const framecnt_t new_fpp = (framecnt_t) ceil ((double) range / (double) _visible_canvas_width);
+ const framepos_t extra_samples = (framepos_t) floor (one_centimeter_in_pixels * new_fpp);
if (start > extra_samples) {
start -= extra_samples;
}
}
-
void
Editor::temporal_zoom_region (bool both_axes)
{
return;
}
- calc_extra_zoom_edges(start, end);
+ calc_extra_zoom_edges (start, end);
/* if we're zooming on both axes we need to save track heights etc.
*/
fit_selected_tracks();
} else {
- temporal_zoom_region(both_axes);
+ temporal_zoom_region (both_axes);
}
framecnt_t start = _session->current_start_frame();
framecnt_t end = _session->current_end_frame();
+ if (_session->actively_recording () ) {
+ framepos_t cur = playhead_cursor->current_frame ();
+ if (cur > end) {
+ /* recording beyond the end marker; zoom out
+ * by 5 seconds more so that if 'follow
+ * playhead' is active we don't immediately
+ * scroll.
+ */
+ end = cur + _session->frame_rate() * 5;
+ }
+ }
+
if ((start == 0 && end == 0) || end < start) {
return;
}
framepos_t range = end - start;
- double const new_fpp = (double) range / (double) _visible_canvas_width;
-
- framepos_t new_page = (framepos_t) floor (_visible_canvas_width * new_fpp);
+ const framecnt_t new_fpp = (framecnt_t) ceil ((double) range / (double) _visible_canvas_width);
+
+ framepos_t new_page = range;
framepos_t middle = (framepos_t) floor ((double) start + ((double) range / 2.0f));
framepos_t new_leftmost = (framepos_t) floor ((double) middle - ((double) new_page / 2.0f));
_session->begin_reversible_command (_("clear ranges"));
XMLNode &before = _session->locations()->get_state();
- Location * looploc = _session->locations()->auto_loop_location();
- Location * punchloc = _session->locations()->auto_punch_location();
- Location * sessionloc = _session->locations()->session_range_location();
-
_session->locations()->clear_ranges ();
- // re-add these
- if (looploc) _session->locations()->add (looploc);
- if (punchloc) _session->locations()->add (punchloc);
- if (sessionloc) _session->locations()->add (sessionloc);
XMLNode &after = _session->locations()->get_state();
_session->add_command(new MementoCommand<Locations>(*(_session->locations()), &before, &after));
tll->set (location.start(), location.end());
// enable looping, reposition and start rolling
- _session->request_play_loop (true);
_session->request_locate (tll->start(), true);
+ _session->request_play_loop (true);
}
}
set_loop_range (start, end, _("set loop range from selection"));
if (play) {
- _session->request_play_loop (true);
_session->request_locate (start, true);
+ _session->request_play_loop (true);
}
}
set_loop_range (start, end, _("set loop range from edit range"));
if (play) {
- _session->request_play_loop (true);
_session->request_locate (start, true);
+ _session->request_play_loop (true);
}
}
set_loop_range (start, end, _("set loop range from region"));
if (play) {
- _session->request_play_loop (true);
_session->request_locate (start, true);
+ _session->request_play_loop (true);
}
}
return;
}
+ // XXX should be using gettext plural forms, maybe?
if (ntracks > 1) {
trackstr = _("tracks");
} else {
}
} else if (nbusses) {
prompt = string_compose (_("Do you really want to remove %1 %2?\n\n"
- "This action cannot be undon, and the session file will be overwritten"),
+ "This action cannot be undone, and the session file will be overwritten"),
nbusses, busstr);
}
{
Session::StateProtector sp (_session);
+ DisplaySuspender ds;
for (vector<boost::shared_ptr<Route> >::iterator x = routes.begin(); x != routes.end(); ++x) {
_session->remove_route (*x);
}
ArdourButton* b = manage (new ArdourButton);
b->set_name ("lock button");
- b->set_markup (string_compose ("<span size=\"large\" weight=\"bold\">%1</span>", _("Click to unlock")));
+ b->set_text (_("Click to unlock"));
b->signal_clicked.connect (sigc::mem_fun (*this, &Editor::unlock));
lock_dialog->get_vbox()->pack_start (*b);