diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-23 14:13:25 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-02-23 14:13:25 +0000 |
commit | 770c39dce16598835ae4c9e970c11fb6edfde348 (patch) | |
tree | 13aa3fbe60d405db018ee070cf1f5a54c28edc89 /gtk2_ardour/editor_ops.cc | |
parent | 33690d3e728d50335d0a0720020e15db29aa3815 (diff) |
fix up meter thread management when JACK client starts/stops/is halted ; put focus in plugin search entry when plugin selector is shown ; add WINDOWS_KEY option to gtk2_ardour/SConscript, controlling what X modifier is used for LEVEL4 modifier/bindings ; fix up Keyboard object to properly support LEVEL4 bindings ; fix Playlist::partition_internal() to avoid acting on regions that should not be operated on given the range provided ; fix up more stuff relating to get_regions_for(), including cut/delete ops on edit range vs. regions
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3115 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 2843a9d794..951c40cd3c 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2273,14 +2273,20 @@ Editor::play_from_edit_point_and_return () nframes64_t start_frame; nframes64_t return_frame; + start_frame = get_preferred_edit_position (true); + + if (session->transport_rolling()) { + /* go to edit point and stop */ + session->request_locate (start_frame, false); + return; + } + /* don't reset the return frame if its already set */ if ((return_frame = session->requested_return_frame()) < 0) { return_frame = session->audible_frame(); } - start_frame = get_preferred_edit_position (true); - if (start_frame >= 0) { session->request_roll_at_and_return (start_frame, return_frame); } @@ -2675,8 +2681,8 @@ Editor::separate_regions_between (const TimeSelection& ts) } if (tmptracks.empty()) { - /* no regions selected: use all tracks */ - tmptracks = track_views; + /* no regions selected: do nothing */ + return; } } else { @@ -3084,7 +3090,7 @@ Editor::align (RegionPoint what) { RegionSelection rs; - get_regions_for_action (rs, false); + get_regions_for_action (rs); nframes64_t where = get_preferred_edit_position(); if (!rs.empty()) { @@ -3103,7 +3109,7 @@ Editor::align_relative (RegionPoint what) nframes64_t where = get_preferred_edit_position(); RegionSelection rs; - get_regions_for_action (rs, false); + get_regions_for_action (rs); if (!rs.empty()) { align_selection_relative (what, where, rs); @@ -3588,7 +3594,11 @@ Editor::cut_copy (CutCopyOp op) RegionSelection rs; - get_regions_for_action (rs); + /* we only want to cut regions if some are selected */ + + if (!selection->regions.empty()) { + get_regions_for_action (rs); + } switch (current_mouse_mode()) { case MouseObject: @@ -3597,7 +3607,7 @@ Editor::cut_copy (CutCopyOp op) begin_reversible_command (opname + _(" objects")); if (!rs.empty()) { - cut_copy_regions (op); + cut_copy_regions (op, rs); if (op == Cut) { selection->clear_regions (); @@ -3677,7 +3687,7 @@ struct PlaylistMapping { }; void -Editor::cut_copy_regions (CutCopyOp op) +Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs) { /* we can't use a std::map here because the ordering is important, and we can't trivially sort a map when we want ordered access to both elements. i think. @@ -3692,9 +3702,6 @@ Editor::cut_copy_regions (CutCopyOp op) /* get ordering correct before we cut/copy */ - RegionSelection rs; - - get_regions_for_action (rs); rs.sort_by_position_and_track (); for (RegionSelection::iterator x = rs.begin(); x != rs.end(); ++x) { @@ -3817,9 +3824,14 @@ void Editor::cut_copy_ranges (CutCopyOp op) { TrackSelection* ts; + TrackSelection entered; if (selection->tracks.empty()) { - ts = &track_views; + if (!entered_track) { + return; + } + entered.push_back (entered_track); + ts = &entered; } else { ts = &selection->tracks; } |