if (was_double_click() && !_views.empty()) {
DraggingView dv = _views.front();
- dv.view->show_region_editor ();
-
+ _editor->edit_region (dv.view);
}
return;
);
}
-
- _editor->maybe_locate_with_edit_preroll (_editor->get_selection().regions.start());
}
RouteTimeAxisView*
PlaylistSet modified_playlists;
RouteTimeAxisView* new_time_axis_view = 0;
+ int32_t divisor = current_music_divisor (_primary->region()->position() - drag_delta, ev_state);
+ TempoMap& tmap (_editor->session()->tempo_map());
+ double qn_delta = _primary->region()->quarter_note() - tmap.exact_qn_at_frame (_primary->region()->position() - drag_delta, divisor);
+
if (_brushing) {
/* all changes were made during motion event handlers */
new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where,
modified_playlists, current_music_divisor (where, ev_state));
} else {
- new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where,
- modified_playlists, 0);
+ if (i->view->region()->position_lock_style() == AudioTime) {
+ new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where,
+ modified_playlists, 0);
+ } else {
+ where = tmap.frame_at_quarter_note (i->view->region()->quarter_note() - qn_delta);
+ new_view = insert_region_into_playlist (i->view->region(), dest_rtv, i->layer, where,
+ modified_playlists, 0);
+ }
}
if (new_view != 0) {
typedef map<boost::shared_ptr<Playlist>, RouteTimeAxisView*> PlaylistMapping;
PlaylistMapping playlist_mapping;
+ int32_t divisor = current_music_divisor (_primary->region()->position() - drag_delta, ev_state);
+ TempoMap& tmap (_editor->session()->tempo_map());
+ double qn_delta = _primary->region()->quarter_note() - tmap.exact_qn_at_frame (_primary->region()->position() - drag_delta, divisor);
+
std::set<boost::shared_ptr<const Region> > uniq;
for (list<DraggingView>::const_iterator i = _views.begin(); i != _views.end(); ) {
modified_playlists, current_music_divisor (where, ev_state)
);
} else {
- new_view = insert_region_into_playlist (
- RegionFactory::create (rv->region (), true), dest_rtv, dest_layer, where,
- modified_playlists, 0
- );
+ if (rv->region()->position_lock_style() == AudioTime) {
+
+ new_view = insert_region_into_playlist (
+ RegionFactory::create (rv->region (), true), dest_rtv, dest_layer, where,
+ modified_playlists, 0
+ );
+ } else {
+ where = tmap.frame_at_quarter_note (rv->region()->quarter_note() - qn_delta);
+ new_view = insert_region_into_playlist (
+ RegionFactory::create (rv->region (), true), dest_rtv, dest_layer, where,
+ modified_playlists, 0
+ );
+ }
}
if (new_view == 0) {
if (rv == _primary) {
rv->region()->set_position (where, current_music_divisor (where, ev_state));
} else {
- rv->region()->set_position (where, 0);
+ if (rv->region()->position_lock_style() == AudioTime) {
+ rv->region()->set_position (where, 0);
+ } else {
+ rv->region()->set_position (tmap.frame_at_quarter_note (rv->region()->quarter_note() - qn_delta), 0);
+
+ }
}
_editor->session()->add_command (new StatefulDiffCommand (rv->region()));
}
if (was_double_click() && !_views.empty()) {
DraggingView dv = _views.front();
- dv.view->show_region_editor ();
-
+ _editor->edit_region (dv.view);
}
return;
}
}
- if (!_views.empty()) {
- if (_operation == StartTrim) {
- _editor->maybe_locate_with_edit_preroll(
- _views.begin()->view->region()->position());
- }
- if (_operation == EndTrim) {
- _editor->maybe_locate_with_edit_preroll(
- _views.begin()->view->region()->position() +
- _views.begin()->view->region()->length());
- }
- }
-
if (!_editor->selection->selected (_primary)) {
_primary->thaw_after_trim ();
} else {
--bbt.bars;
}
const double beat = map.beat_at_bbt (bbt);
+ const framepos_t frame = map.frame_at_beat (beat);
_real_section = map.add_meter (Meter (_marker->meter().divisions_per_bar(), _marker->meter().note_divisor())
- , beat, bbt, _real_section->position_lock_style());
+ , beat, bbt, frame, _real_section->position_lock_style());
if (!_real_section) {
aborted (true);
return;
pf = adjusted_current_frame (event, false);
}
- _editor->session()->tempo_map().gui_move_meter (_real_section, pf);
+ _editor->session()->tempo_map().gui_set_meter_position (_real_section, pf);
/* fake marker meeds to stay under the mouse, unlike the real one. */
_marker->set_position (adjusted_current_frame (event, false));
/* snap to beat is 1, snap to bar is -1 (sorry) */
const int sub_num = _editor->get_grid_music_divisions (event->button.state);
- map.gui_move_tempo (_real_section, pf, sub_num);
+ map.gui_set_tempo_position (_real_section, pf, sub_num);
show_verbose_cursor_time (_real_section->frame());
}
if (first_move) {
/* get current state */
before_state = &map.get_state();
- _editor->begin_reversible_command (_("dilate tempo"));
+ _editor->begin_reversible_command (_("stretch tempo"));
}
framepos_t pf;
if (ArdourKeyboard::indicates_constraint (event->button.state)) {
/* adjust previous tempo to match pointer frame */
- _editor->session()->tempo_map().gui_dilate_tempo (_tempo, map.frame_at_quarter_note (_grab_qn), pf);
+ _editor->session()->tempo_map().gui_stretch_tempo (_tempo, map.frame_at_quarter_note (_grab_qn), pf);
}
ostringstream sstr;
sstr << "^" << fixed << setprecision(3) << map.tempo_at_frame (pf).note_types_per_minute() << "\n";
s->request_play_range (&_editor->selection->time, true);
} else if (!s->config.get_external_sync()) {
if (UIConfiguration::instance().get_follow_edits() && !s->transport_rolling()) {
- if (_operation == SelectionEndTrim)
- _editor->maybe_locate_with_edit_preroll( _editor->get_selection().time.end_frame());
- else
- s->request_locate (_editor->get_selection().time.start());
+ s->request_locate (_editor->get_selection().time.start());
}
}
/* just a click, no pointer movement.
*/
+ if (was_double_click()) {
+ if (UIConfiguration::instance().get_use_double_click_to_zoom_to_selection()) {
+ _editor->temporal_zoom_selection (Both);
+ return;
+ }
+ }
+
if (_operation == SelectionExtend) {
if (_time_selection_at_start) {
framepos_t pos = adjusted_current_frame (event, false);