diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-03-21 15:38:54 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-03-21 15:38:54 +0000 |
commit | 9ce894d42cf1fda76e22474e504e4ad895c02e82 (patch) | |
tree | 70785db1532b0a70beb878c7c5daac2998c43402 /gtk2_ardour/editor_ops.cc | |
parent | 767984b486086e3682e521179c2fb8364b3bba76 (diff) |
make crop-to-range work across all selected tracks; don't edit destructive tracks with several ops; removing debugging output
git-svn-id: svn://localhost/ardour2/trunk@1633 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 129 |
1 files changed, 68 insertions, 61 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index e6c5790133..f8e6f41a9e 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1508,19 +1508,13 @@ Editor::insert_region_list_drag (boost::shared_ptr<AudioRegion> region, int x, i return; } - cerr << "drop target playlist, UC = " << playlist.use_count() << endl; - snap_to (where); begin_reversible_command (_("insert dragged region")); XMLNode &before = playlist->get_state(); - cerr << "pre add target playlist, UC = " << playlist.use_count() << endl; playlist->add_region (RegionFactory::create (region), where, 1.0); - cerr << "post add target playlist, UC = " << playlist.use_count() << endl; session->add_command(new MementoCommand<Playlist>(*playlist, &before, &playlist->get_state())); commit_reversible_command (); - - cerr << "post drop target playlist, UC = " << playlist.use_count() << endl; } void @@ -1999,6 +1993,12 @@ Editor::separate_region_from_selection () if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) { if (atv->is_audio_track()) { + + /* no edits to destructive tracks */ + + if (atv->audio_track()->audio_diskstream()->destructive()) { + continue; + } if ((playlist = atv->playlist()) != 0) { if (!doing_undo) { @@ -2052,6 +2052,12 @@ Editor::separate_regions_using_location (Location& loc) if (atv->is_audio_track()) { + /* no edits to destructive tracks */ + + if (atv->audio_track()->audio_diskstream()->destructive()) { + continue; + } + if ((playlist = atv->playlist()) != 0) { XMLNode *before; if (!doing_undo) { @@ -2081,75 +2087,76 @@ Editor::separate_regions_using_location (Location& loc) void Editor::crop_region_to_selection () { - if (selection->time.empty()) { + if (selection->time.empty() || selection->tracks.empty()) { return; } vector<boost::shared_ptr<Playlist> > playlists; boost::shared_ptr<Playlist> playlist; - if (clicked_trackview != 0) { - - if ((playlist = clicked_trackview->playlist()) == 0) { - return; - } - - playlists.push_back (playlist); - - } else { + sort_track_selection (); + + for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - sort_track_selection (); - - for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - - AudioTimeAxisView* atv; + AudioTimeAxisView* atv; + + if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) { + + if (atv->is_audio_track()) { + + /* no edits to destructive tracks */ - if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) { + if (atv->audio_track()->audio_diskstream()->destructive()) { + continue; + } - if (atv->is_audio_track()) { - - if ((playlist = atv->playlist()) != 0) { - playlists.push_back (playlist); - } + if ((playlist = atv->playlist()) != 0) { + playlists.push_back (playlist); } } } } - if (!playlists.empty()) { - - nframes_t start; - nframes_t end; - nframes_t cnt; - - begin_reversible_command (_("trim to selection")); - - for (vector<boost::shared_ptr<Playlist> >::iterator i = playlists.begin(); i != playlists.end(); ++i) { - - boost::shared_ptr<Region> region; - - start = selection->time.start(); - - if ((region = (*i)->top_region_at(start)) == 0) { - continue; - } - - /* now adjust lengths to that we do the right thing - if the selection extends beyond the region - */ - - start = max (start, region->position()); - end = min (selection->time.end_frame(), start + region->length() - 1); - cnt = end - start + 1; - - XMLNode &before = (*i)->get_state(); - region->trim_to (start, cnt, this); - XMLNode &after = (*i)->get_state(); - session->add_command (new MementoCommand<Playlist>(*(*i), &before, &after)); + if (playlists.empty()) { + return; + } + + nframes_t start; + nframes_t end; + nframes_t cnt; + + begin_reversible_command (_("trim to selection")); + + for (vector<boost::shared_ptr<Playlist> >::iterator i = playlists.begin(); i != playlists.end(); ++i) { + + boost::shared_ptr<Region> region; + + start = selection->time.start(); + + if ((region = (*i)->top_region_at(start)) == 0) { + continue; } - - commit_reversible_command (); + + /* now adjust lengths to that we do the right thing + if the selection extends beyond the region + */ + + start = max (start, region->position()); + if (max_frames - start < region->length()) { + end = start + region->length() - 1; + } else { + end = max_frames; + } + end = min (selection->time.end_frame(), end); + cnt = end - start + 1; + + XMLNode &before = (*i)->get_state(); + region->trim_to (start, cnt, this); + XMLNode &after = (*i)->get_state(); + session->add_command (new MementoCommand<Playlist>(*(*i), &before, &after)); } + + commit_reversible_command (); } void @@ -2581,7 +2588,7 @@ Editor::bounce_range_selection () nframes_t start = selection->time[clicked_selection].start; nframes_t end = selection->time[clicked_selection].end; nframes_t cnt = end - start + 1; - + begin_reversible_command (_("bounce range")); for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) { @@ -2603,7 +2610,7 @@ Editor::bounce_range_selection () itt.done = false; itt.cancel = false; itt.progress = false; - + XMLNode &before = playlist->get_state(); atv->audio_track()->bounce_range (start, cnt, itt); XMLNode &after = playlist->get_state(); |