diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-26 23:25:44 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-26 23:25:44 +0000 |
commit | 1526735d7925bf07f7a6c3378a87bf559e11050a (patch) | |
tree | e95c8086296e3b45b2b91579a8e588dc609ec0c9 /gtk2_ardour/editor_selection.cc | |
parent | bdb84342381310f6162418e0603e7eeaabde20bd (diff) |
some (unfinished) work on incorporating Ben's rev 6919 changes regarding track selection; make newly selected tracks show the current range selection; fix crashes related to meter display; remove "all" group from main group tab display and just put it down in its own button (totally incomplete); minor cleanups
git-svn-id: svn://localhost/ardour2/branches/3.0@7696 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_selection.cc')
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 85 |
1 files changed, 83 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index e99b31c478..bde72e5374 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -174,12 +174,83 @@ Editor::select_all_tracks () * tracks, in which case nothing will happen unless `force' is true. */ void -Editor::set_selected_track_as_side_effect (bool force) +Editor::set_selected_track_as_side_effect (Selection::Operation op, bool force) { + cerr << "E::sstase ca = " << clicked_axisview << " cr = " << clicked_routeview + << " op = " << op << " force = " << force + << endl; + if (!clicked_axisview) { return; } +#if 1 + if (!clicked_routeview) { + return; + } + + RouteGroup* group = clicked_routeview->route()->route_group(); + + switch (op) { + case Selection::Toggle: + if (selection->selected (clicked_axisview)) { + if (_session->all_route_group().is_active()) { + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) { + selection->remove(*i); + } + } else 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); + } + } else { + selection->remove (clicked_axisview); + } + } else { + if (_session->all_route_group().is_active()) { + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) { + selection->add(*i); + } + } else 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); + } + } else { + selection->add (clicked_axisview); + } + } + break; + + case Selection::Add: + selection->clear(); + cerr << ("Editor::set_selected_track_as_side_effect case Selection::Add not yet implemented\n"); + break; + + case Selection::Set: + selection->clear(); + if (_session->all_route_group().is_active()) { + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end (); ++i) { + selection->add(*i); + } + } else 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); + } + } else { + selection->set (clicked_axisview); + } + break; + + case Selection::Extend: + selection->clear(); + cerr << ("Editor::set_selected_track_as_side_effect case Selection::Add not yet implemented\n"); + break; + } + +#else // the older version + if (!selection->tracks.empty()) { if (!selection->selected (clicked_axisview)) { selection->add (clicked_axisview); @@ -188,6 +259,7 @@ Editor::set_selected_track_as_side_effect (bool force) } else if (force) { selection->set (clicked_axisview); } +#endif } void @@ -797,12 +869,21 @@ Editor::track_selection_changed () } for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - (*i)->set_selected (find (selection->tracks.begin(), selection->tracks.end(), *i) != selection->tracks.end()); + + bool yn = (find (selection->tracks.begin(), selection->tracks.end(), *i) != selection->tracks.end()); + + (*i)->set_selected (yn); TimeAxisView::Children c = (*i)->get_child_list (); for (TimeAxisView::Children::iterator j = c.begin(); j != c.end(); ++j) { (*j)->set_selected (find (selection->tracks.begin(), selection->tracks.end(), j->get()) != selection->tracks.end()); } + + if (yn) { + (*i)->reshow_selection (selection->time); + } else { + (*i)->hide_selection (); + } } ActionManager::set_sensitive (ActionManager::track_selection_sensitive_actions, !selection->tracks.empty()); |