group = clicked_routeview->route()->route_group();
}
- bool had_tracks = !selection->tracks.empty();
- RouteGroup& arg (_session->all_route_group());
-
switch (op) {
case Selection::Toggle:
if (selection->selected (clicked_axisview)) {
- if (arg.is_select() && arg.is_active()) {
- for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- selection->remove(*i);
- }
- } else if (group && group->is_active()) {
+ if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
if ((*i)->route_group() == group) {
selection->remove(*i);
selection->remove (clicked_axisview);
}
} else {
- if (arg.is_select() && arg.is_active()) {
- for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- selection->add(*i);
- }
- } else if (group && group->is_active()) {
+ if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
if ((*i)->route_group() == group) {
selection->add(*i);
break;
case Selection::Add:
- if (!had_tracks && arg.is_select() && arg.is_active()) {
- /* nothing was selected already, and all group is active etc. so use
- all tracks.
- */
- for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- selection->add(*i);
- }
- } else if (group && group->is_active()) {
+ if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
if ((*i)->route_group() == group) {
selection->add(*i);
case Selection::Set:
selection->clear();
- if (!had_tracks && arg.is_select() && arg.is_active()) {
- /* nothing was selected already, and all group is active etc. so use
- all tracks.
- */
- for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
- selection->add(*i);
- }
- } else if (group && group->is_active()) {
+ if (group && group->is_active()) {
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) {
if ((*i)->route_group() == group) {
selection->add(*i);
if (!clicked_control_point) {
return false;
}
+
bool ret = false;
switch (op) {
case Selection::Set:
- if (press) {
+ if (!selection->selected (clicked_control_point)) {
selection->set (clicked_control_point);
ret = true;
+ } else {
+ /* clicked on an already selected point */
+ if (press) {
+ break;
+ } else {
+ if (selection->points.size() > 1) {
+ selection->set (clicked_control_point);
+ ret = true;
+ }
+ }
}
break;
+
case Selection::Add:
if (press) {
selection->add (clicked_control_point);
RouteTimeAxisView* v = dynamic_cast<RouteTimeAxisView*> (*i);
if (v && v->route()->route_group() == group) {
-
+
boost::shared_ptr<Track> t = v->track();
if (t) {
if (playlists.insert (t->playlist()).second) {
ActionManager::set_sensitive (ActionManager::track_selection_sensitive_actions, !selection->tracks.empty());
/* notify control protocols */
-
+
ControlProtocol::TrackSelectionChanged (routes);
- if (sfbrowser) {
+ if (sfbrowser && _session && !_session->deletion_in_progress()) {
uint32_t audio_track_cnt = 0;
uint32_t midi_track_cnt = 0;
void
Editor::time_selection_changed ()
{
- if (Profile->get_sae()) {
- return;
- }
-
/* XXX this is superficially inefficient. Hide the selection in all
* tracks, then show it in all selected tracks.
*
_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("transform-region")->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);
_region_actions->get_action("reset-region-gain-envelopes")->set_sensitive (false);
_region_actions->get_action("toggle-region-gain-envelope-active")->set_sensitive (false);
_region_actions->get_action("pitch-shift-region")->set_sensitive (false);
+ _region_actions->get_action("strip-region-silence")->set_sensitive (false);
+ _region_actions->get_action("show-rhythm-ferret")->set_sensitive (false);
}
if (have_active_fade_out && have_inactive_fade_out) {
// a->set_inconsistent ();
}
-
+
bool const have_active_fade = have_active_fade_in || have_active_fade_out;
bool const have_inactive_fade = have_inactive_fade_in || have_inactive_fade_out;
if (have_active_fade && have_inactive_fade) {
// a->set_inconsistent ();
}
-
+
_ignore_region_action = false;
_all_region_actions_sensitized = false;
/* find all the tracks that have selected regions */
set<TimeAxisView*> tracks;
-
+
for (RegionSelection::const_iterator r = selection->regions.begin(); r != selection->regions.end(); ++r) {
tracks.insert (&(*r)->get_time_axis_view());
}
selection->set (selection->regions.start(), selection->regions.end_frame());
/* and select the tracks */
-
+
selection->set (tvl);
-
- if (!Profile->get_sae()) {
- set_mouse_mode (Editing::MouseRange, false);
- }
+
+ set_mouse_mode (Editing::MouseRange, false);
}
void
selection->set (loc.start(), loc.end());
commit_reversible_selection_op ();
- if (!Profile->get_sae()) {
- set_mouse_mode (Editing::MouseRange, false);
- }
+ set_mouse_mode (Editing::MouseRange, false);
}
void
}
void
-Editor::select_all_selectables_using_edit (bool after)
+Editor::select_all_selectables_using_edit (bool after, bool from_context_menu)
{
framepos_t start;
framepos_t end;
list<Selectable *> touched;
if (after) {
- start = get_preferred_edit_position(EDIT_IGNORE_NONE, true);
+ start = get_preferred_edit_position(EDIT_IGNORE_NONE, from_context_menu);
end = _session->current_end_frame();
} else {
- if ((end = get_preferred_edit_position(EDIT_IGNORE_NONE, true)) > 1) {
+ if ((end = get_preferred_edit_position(EDIT_IGNORE_NONE, from_context_menu)) > 1) {
start = 0;
end -= 1;
} else {
end = 0;
return false;
}
-
+
// if (!mouse_frame (m, ignored)) {
// /* mouse is not in a canvas, try playhead+selected marker.
// this is probably most true when using menus.