}
} else if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- if ((*i)->route_group() == group)
+ if ((*i)->route_group() == group) {
selection->remove(*i);
+ }
}
} else {
selection->remove (clicked_axisview);
}
} else if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- if ( (*i)->route_group() == group)
+ if ((*i)->route_group() == group) {
selection->add(*i);
+ }
}
} else {
selection->add (clicked_axisview);
}
} else if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- if ((*i)->route_group() == group)
+ if ((*i)->route_group() == group) {
selection->add(*i);
+ }
}
} else {
selection->add (clicked_axisview);
}
} else if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- if ((*i)->route_group() == group)
+ if ((*i)->route_group() == group) {
selection->add(*i);
+ }
}
} else {
selection->set (clicked_axisview);
void
Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no_remove)
{
+ begin_reversible_selection_op(_("Set Selected Track"));
+
switch (op) {
case Selection::Toggle:
if (selection->selected (&view)) {
extend_selection_to_track (view);
break;
}
+
+ commit_reversible_selection_op ();
}
void
return;
}
- begin_reversible_command (_("set selected regions"));
+ begin_reversible_selection_op (_("set selected regions"));
switch (op) {
case Selection::Toggle:
break;
}
- commit_reversible_command () ;
+ commit_reversible_selection_op () ;
}
bool
return true;
}
- begin_reversible_command (_("set selected regions"));
+ begin_reversible_selection_op (_("set selected regions"));
selection->set (rv);
- commit_reversible_command () ;
+ commit_reversible_selection_op () ;
return true;
}
editor_menu_actions->get_action("RegionMenuMIDI")->set_sensitive (false);
_region_actions->get_action("show-region-list-editor")->set_sensitive (false);
_region_actions->get_action("quantize-region")->set_sensitive (false);
+ _region_actions->get_action("legatize-region")->set_sensitive (false);
+ _region_actions->get_action("remove-overlap")->set_sensitive (false);
_region_actions->get_action("fork-region")->set_sensitive (false);
_region_actions->get_action("insert-patch-change-context")->set_sensitive (false);
_region_actions->get_action("insert-patch-change")->set_sensitive (false);
return;
}
+ begin_reversible_selection_op(_("Select All in Track"));
+
clicked_routeview->get_selectables (0, max_framepos, 0, DBL_MAX, touched);
switch (op) {
selection->add (touched);
break;
}
+
+ commit_reversible_selection_op ();
}
-void
+bool
Editor::select_all_internal_edit (Selection::Operation)
{
+ bool selected = false;
+
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
if (mrv) {
mrv->select_all_notes ();
+ selected = true;
}
}
+
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(entered_regionview);
+ if (mrv) {
+ mrv->select_all_notes ();
+ selected = true;
+ }
+
+ return selected;
}
void
TrackViewList ts = track_views;
- if (_internal_editing) {
-
- bool midi_selected = false;
-
- for (TrackViewList::iterator iter = ts.begin(); iter != ts.end(); ++iter) {
- if ((*iter)->hidden()) {
- continue;
- }
-
- RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (*iter);
-
- if (rtav && rtav->is_midi_track()) {
- midi_selected = true;
- break;
- }
- }
-
- if (midi_selected) {
- select_all_internal_edit (op);
- return;
- }
+ if (internal_editing() && select_all_internal_edit(op)) {
+ return; // Selected notes
}
for (TrackViewList::iterator iter = ts.begin(); iter != ts.end(); ++iter) {
}
- begin_reversible_command (_("select all"));
+ begin_reversible_selection_op (_("select all"));
switch (op) {
case Selection::Add:
selection->add (touched);
/* meaningless, because we're selecting everything */
break;
}
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
void
return;
}
+ begin_reversible_selection_op(_("Invert Selection in Track"));
clicked_routeview->get_inverted_selectables (*selection, touched);
selection->set (touched);
+ commit_reversible_selection_op ();
}
void
{
list<Selectable *> touched;
- if (_internal_editing) {
+ if (internal_editing()) {
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
if (mrv) {
(*iter)->get_inverted_selectables (*selection, touched);
}
+ begin_reversible_selection_op(_("Invert Selection"));
selection->set (touched);
+ commit_reversible_selection_op ();
}
/** @param start Start time in session frames.
}
}
- begin_reversible_command (_("select all within"));
+ begin_reversible_selection_op (_("select all within"));
switch (op) {
case Selection::Add:
selection->add (found);
break;
}
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
void
}
selection->set (selection->regions.start(), selection->regions.end_frame());
+
+ //we must now select tracks, because otherwise set_selection_from_region would appear to do nothing
+ //perhaps too drastic; perhaps the user really only wants the region's track selected
+ //but I can't think of any use-case for that (why wouldn't you just select the region?)
+ select_all_tracks();
+
if (!Profile->get_sae()) {
set_mouse_mode (Editing::MouseRange, false);
}
void
Editor::set_selection_from_range (Location& loc)
{
- begin_reversible_command (_("set selection from range"));
+ begin_reversible_selection_op (_("set selection from range"));
selection->set (loc.start(), loc.end());
- commit_reversible_command ();
+ commit_reversible_selection_op ();
if (!Profile->get_sae()) {
set_mouse_mode (Editing::MouseRange, false);
(*iter)->get_selectables (start, end - 1, 0, DBL_MAX, touched);
}
- begin_reversible_command (_("select all from range"));
+ begin_reversible_selection_op (_("select all from range"));
selection->set (touched);
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
}
(*iter)->get_selectables (location->start(), location->end() - 1, 0, DBL_MAX, touched);
}
- begin_reversible_command (_("select all from punch"));
+ begin_reversible_selection_op (_("select all from punch"));
selection->set (touched);
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
}
(*iter)->get_selectables (location->start(), location->end() - 1, 0, DBL_MAX, touched);
}
- begin_reversible_command (_("select all from loop"));
+ begin_reversible_selection_op (_("select all from loop"));
selection->set (touched);
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
}
}
- if (_internal_editing) {
+ if (internal_editing()) {
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
if (mrv) {
}
if (after) {
- begin_reversible_command (_("select all after cursor"));
+ begin_reversible_selection_op (_("select all after cursor"));
} else {
- begin_reversible_command (_("select all before cursor"));
+ begin_reversible_selection_op (_("select all before cursor"));
}
TrackViewList* ts;
(*iter)->get_selectables (start, end, 0, DBL_MAX, touched);
}
selection->set (touched);
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
void
list<Selectable *> touched;
if (after) {
- start = get_preferred_edit_position();
+ start = get_preferred_edit_position(false, true);
end = _session->current_end_frame();
} else {
- if ((end = get_preferred_edit_position()) > 1) {
+ if ((end = get_preferred_edit_position(false, true)) > 1) {
start = 0;
end -= 1;
} else {
}
}
- if (_internal_editing) {
+ if (internal_editing()) {
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
mrv->select_range (start, end);
}
if (after) {
- begin_reversible_command (_("select all after edit"));
+ begin_reversible_selection_op (_("select all after edit"));
} else {
- begin_reversible_command (_("select all before edit"));
+ begin_reversible_selection_op (_("select all before edit"));
}
TrackViewList* ts;
(*iter)->get_selectables (start, end, 0, DBL_MAX, touched);
}
selection->set (touched);
- commit_reversible_command ();
+ commit_reversible_selection_op ();
}
void
-Editor::select_all_selectables_between (bool /*within*/)
+Editor::select_all_selectables_between (bool within)
{
framepos_t start;
framepos_t end;
return;
}
- if (_internal_editing) {
+ if (internal_editing()) {
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
mrv->select_range (start, end);
if ((*iter)->hidden()) {
continue;
}
- (*iter)->get_selectables (start, end, 0, DBL_MAX, touched);
+ (*iter)->get_selectables (start, end, 0, DBL_MAX, touched, within);
}
+ begin_reversible_selection_op(_("Select all Selectables Between"));
selection->set (touched);
+ commit_reversible_selection_op ();
}
void
return;
}
+ begin_reversible_selection_op(_("Select Range Between"));
set_mouse_mode (MouseRange);
selection->set (start, end);
+ commit_reversible_selection_op ();
}
bool
void
Editor::deselect_all ()
{
+ begin_reversible_selection_op(_("Deselect All"));
selection->clear ();
+ commit_reversible_selection_op ();
}
long
Editor::select_range (framepos_t s, framepos_t e)
{
+ begin_reversible_selection_op(_("Select Range"));
selection->add (clicked_axisview);
selection->time.clear ();
- return selection->set (s, e);
+ long ret = selection->set (s, e);
+ commit_reversible_selection_op ();
+ return ret;
}