implement a delete operation that works like "cut" but doesn't put the deleted items in the cut buffer. you will not be able to access this from your keyboard (Delete keyunless you remove your existing ~/.config/ardour3/ardour.bindings file
git-svn-id: svn://localhost/ardour2/branches/3.0@9711 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
1de3eac2de
commit
a82b900e44
@ -176,6 +176,7 @@
|
||||
<menuitem action='select-prev-route'/>
|
||||
</menu>
|
||||
<separator/>
|
||||
<menuitem action='editor-delete'/>
|
||||
<menuitem action='editor-crop'/>
|
||||
<menuitem action='split-region'/>
|
||||
<menuitem action='split-region-at-transients'/>
|
||||
|
@ -627,6 +627,12 @@ AutomationTimeAxisView::cut_copy_clear_one (AutomationLine& line, Selection& sel
|
||||
double const end = tc.from (selection.time.front().end - tc.origin_b ());
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
if (alist->cut (start, end) != 0) {
|
||||
_session->add_command(new MementoCommand<AutomationList>(*alist.get(), &before, &alist->get_state()));
|
||||
}
|
||||
break;
|
||||
|
||||
case Cut:
|
||||
|
||||
if ((what_we_got = alist->cut (start, end)) != 0) {
|
||||
@ -720,6 +726,11 @@ AutomationTimeAxisView::cut_copy_clear_objects_one (AutomationLine& line, PointS
|
||||
}
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
if (alist->cut ((*i).start, (*i).end) != 0) {
|
||||
_session->add_command (new MementoCommand<AutomationList>(*alist.get(), new XMLNode (before), &alist->get_state()));
|
||||
}
|
||||
break;
|
||||
case Cut:
|
||||
if ((what_we_got = alist->cut ((*i).start, (*i).end)) != 0) {
|
||||
_editor.get_cut_buffer().add (what_we_got);
|
||||
|
@ -196,6 +196,7 @@ enum InsertTimeOption {
|
||||
/////////////////////
|
||||
// These don't need their state saved. yet...
|
||||
enum CutCopyOp {
|
||||
Delete,
|
||||
Cut,
|
||||
Copy,
|
||||
Clear
|
||||
|
@ -1134,6 +1134,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||
|
||||
void split_region ();
|
||||
|
||||
void delete_ ();
|
||||
void cut ();
|
||||
void copy ();
|
||||
void paste (float times);
|
||||
|
@ -295,6 +295,7 @@ Editor::register_actions ()
|
||||
ActionManager::mouse_edit_point_requires_canvas_actions.push_back (act);
|
||||
|
||||
reg_sens (editor_actions, "editor-cut", _("Cut"), sigc::mem_fun(*this, &Editor::cut));
|
||||
reg_sens (editor_actions, "editor-delete", _("Delete"), sigc::mem_fun(*this, &Editor::delete_));
|
||||
|
||||
reg_sens (editor_actions, "editor-copy", _("Copy"), sigc::mem_fun(*this, &Editor::copy));
|
||||
reg_sens (editor_actions, "editor-paste", _("Paste"), sigc::mem_fun(*this, &Editor::keyboard_paste));
|
||||
|
@ -3375,6 +3375,13 @@ Editor::bounce_range_selection (bool replace, bool enable_processing)
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
/** Delete selected regions, automation points or a time range */
|
||||
void
|
||||
Editor::delete_ ()
|
||||
{
|
||||
cut_copy (Delete);
|
||||
}
|
||||
|
||||
/** Cut selected regions, automation points or a time range */
|
||||
void
|
||||
Editor::cut ()
|
||||
@ -3427,6 +3434,9 @@ Editor::cut_copy (CutCopyOp op)
|
||||
string opname;
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
opname = _("delete");
|
||||
break;
|
||||
case Cut:
|
||||
opname = _("cut");
|
||||
break;
|
||||
@ -3444,7 +3454,7 @@ Editor::cut_copy (CutCopyOp op)
|
||||
this function.
|
||||
*/
|
||||
|
||||
if (op == Cut || op == Clear) {
|
||||
if (op == Delete || op == Cut || op == Clear) {
|
||||
if (_drags->active ()) {
|
||||
_drags->abort ();
|
||||
}
|
||||
@ -3497,7 +3507,7 @@ Editor::cut_copy (CutCopyOp op)
|
||||
if (!rs.empty()) {
|
||||
cut_copy_regions (op, rs);
|
||||
|
||||
if (op == Cut) {
|
||||
if (op == Cut || op == Delete) {
|
||||
selection->clear_regions ();
|
||||
}
|
||||
}
|
||||
@ -3505,7 +3515,7 @@ Editor::cut_copy (CutCopyOp op)
|
||||
if (!selection->points.empty()) {
|
||||
cut_copy_points (op);
|
||||
|
||||
if (op == Cut) {
|
||||
if (op == Cut || op == Delete) {
|
||||
selection->clear_points ();
|
||||
}
|
||||
}
|
||||
@ -3532,7 +3542,7 @@ Editor::cut_copy (CutCopyOp op)
|
||||
cut_copy_ranges (op);
|
||||
commit_reversible_command ();
|
||||
|
||||
if (op == Cut) {
|
||||
if (op == Cut || op == Delete) {
|
||||
selection->clear_time ();
|
||||
}
|
||||
|
||||
@ -3543,7 +3553,7 @@ Editor::cut_copy (CutCopyOp op)
|
||||
}
|
||||
}
|
||||
|
||||
if (op == Cut || op == Clear) {
|
||||
if (op == Delete || op == Cut || op == Clear) {
|
||||
_drags->abort ();
|
||||
}
|
||||
}
|
||||
@ -3703,13 +3713,13 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
|
||||
first_position = min ((framepos_t) (*x)->region()->position(), first_position);
|
||||
|
||||
if (op == Cut || op == Clear) {
|
||||
if (op == Cut || op == Clear || op == Delete) {
|
||||
boost::shared_ptr<Playlist> pl = (*x)->region()->playlist();
|
||||
|
||||
if (pl) {
|
||||
FreezeList::iterator fl;
|
||||
|
||||
//only take state if this is a new playlist.
|
||||
// only take state if this is a new playlist.
|
||||
for (fl = freezelist.begin(); fl != freezelist.end(); ++fl) {
|
||||
if ((*fl) == pl) {
|
||||
break;
|
||||
@ -3757,6 +3767,8 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
tmp = x;
|
||||
++tmp;
|
||||
|
||||
if (op != Delete) {
|
||||
|
||||
vector<PlaylistMapping>::iterator z;
|
||||
|
||||
for (z = pmap.begin(); z != pmap.end(); ++z) {
|
||||
@ -3774,6 +3786,7 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
} else {
|
||||
npl = (*z).pl;
|
||||
}
|
||||
}
|
||||
|
||||
boost::shared_ptr<Region> r = (*x)->region();
|
||||
boost::shared_ptr<Region> _xx;
|
||||
@ -3781,6 +3794,10 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
assert (r != 0);
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
pl->remove_region (r);
|
||||
break;
|
||||
|
||||
case Cut:
|
||||
_xx = RegionFactory::create (r);
|
||||
npl->add_region (_xx, r->position() - first_position);
|
||||
@ -3790,8 +3807,6 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
case Copy:
|
||||
/* copy region before adding, so we're not putting same object into two different playlists */
|
||||
npl->add_region (RegionFactory::create (r), r->position() - first_position);
|
||||
break;
|
||||
|
||||
case Clear:
|
||||
pl->remove_region (r);
|
||||
break;
|
||||
@ -3800,6 +3815,8 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
x = tmp;
|
||||
}
|
||||
|
||||
if (op != Delete) {
|
||||
|
||||
list<boost::shared_ptr<Playlist> > foo;
|
||||
|
||||
/* the pmap is in the same order as the tracks in which selected regions occured */
|
||||
@ -3820,6 +3837,7 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs)
|
||||
} else {
|
||||
_last_cut_copy_source_track = pmap.front().tv;
|
||||
}
|
||||
}
|
||||
|
||||
for (FreezeList::iterator pl = freezelist.begin(); pl != freezelist.end(); ++pl) {
|
||||
(*pl)->thaw ();
|
||||
|
@ -2943,6 +2943,9 @@ MidiRegionView::cut_copy_clear (Editing::CutCopyOp op)
|
||||
PublicEditor& editor (trackview.editor());
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
/* XXX what to do ? */
|
||||
break;
|
||||
case Cut:
|
||||
case Copy:
|
||||
editor.get_cut_buffer().add (selection_as_cut_buffer());
|
||||
@ -2959,6 +2962,7 @@ MidiRegionView::cut_copy_clear (Editing::CutCopyOp op)
|
||||
switch (op) {
|
||||
case Copy:
|
||||
break;
|
||||
case Delete:
|
||||
case Cut:
|
||||
case Clear:
|
||||
note_diff_remove_note (*i);
|
||||
|
@ -250,7 +250,7 @@ This mode provides many different operations on both regions and control points,
|
||||
@vis|Editor/scroll-tracks-up|Page_Up|scroll up (page)
|
||||
@movp|Transport/GotoStart|Home|to start marker
|
||||
@movp|Transport/GotoEnd|End|to end marker
|
||||
@edit|Editor/editor-cut|Delete|cut
|
||||
@edit|Editor/editor-delete|Delete|delete
|
||||
|
||||
@movp|Editor/playhead-to-edit|Return|to edit point
|
||||
@eep|Editor/edit-to-playhead|<@SECONDARY@>Return|move EP to playhead
|
||||
|
@ -1369,10 +1369,19 @@ RouteTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op)
|
||||
playlist->clear_owned_changes ();
|
||||
|
||||
switch (op) {
|
||||
case Delete:
|
||||
if (playlist->cut (time) != 0) {
|
||||
vector<Command*> cmds;
|
||||
playlist->rdiff (cmds);
|
||||
_session->add_commands (cmds);
|
||||
|
||||
_session->add_command (new StatefulDiffCommand (playlist));
|
||||
}
|
||||
break;
|
||||
|
||||
case Cut:
|
||||
if ((what_we_got = playlist->cut (time)) != 0) {
|
||||
_editor.get_cut_buffer().add (what_we_got);
|
||||
|
||||
vector<Command*> cmds;
|
||||
playlist->rdiff (cmds);
|
||||
_session->add_commands (cmds);
|
||||
|
Loading…
Reference in New Issue
Block a user