small change to logic for track selection when context/button clicking on a track header.

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3177 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2008-03-24 19:49:21 +00:00
parent 7e14351aee
commit c8616fde7e
4 changed files with 21 additions and 19 deletions

View file

@ -171,6 +171,7 @@ Editor::set_selected_track_as_side_effect (bool force)
} }
if (!selection->tracks.empty()) { if (!selection->tracks.empty()) {
if (!selection->selected (clicked_trackview)) { if (!selection->selected (clicked_trackview)) {
selection->add (clicked_trackview); selection->add (clicked_trackview);
} }
@ -201,21 +202,7 @@ Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no
break; break;
case Selection::Set: case Selection::Set:
if (selection->selected (&view) && selection->tracks.size() > 1) { selection->set (&view);
/* reset track selection if there is only 1 other track
selected OR if no_remove is not set (its there to
prevent deselecting a multi-track selection
when clicking on an already selected track
for some reason.
*/
if (selection->tracks.empty()) {
selection->set (&view);
} else if (selection->tracks.size() == 1 || !no_remove) {
selection->set (&view);
}
}
break; break;
case Selection::Extend: case Selection::Extend:

View file

@ -391,7 +391,8 @@ RouteTimeAxisView::playlist_click ()
playlist_action_menu->set_name ("ArdourContextMenu"); playlist_action_menu->set_name ("ArdourContextMenu");
build_playlist_menu (playlist_action_menu); build_playlist_menu (playlist_action_menu);
editor.set_selected_track (*this, Selection::Add);
conditionally_add_to_selection ();
playlist_action_menu->popup (1, gtk_get_current_event_time()); playlist_action_menu->popup (1, gtk_get_current_event_time());
} }
@ -404,7 +405,7 @@ RouteTimeAxisView::automation_click ()
*/ */
build_display_menu (); build_display_menu ();
} }
editor.set_selected_track (*this, Selection::Add); conditionally_add_to_selection ();
automation_action_menu->popup (1, gtk_get_current_event_time()); automation_action_menu->popup (1, gtk_get_current_event_time());
} }

View file

@ -527,6 +527,18 @@ TimeAxisView::name_entry_button_release (GdkEventButton *ev)
return false; return false;
} }
void
TimeAxisView::conditionally_add_to_selection ()
{
Selection& s (editor.get_selection());
if (!s.selected (this)) {
cerr << "set selected track\n";
editor.set_selected_track (*this, Selection::Set);
}
}
void void
TimeAxisView::popup_display_menu (guint32 when) TimeAxisView::popup_display_menu (guint32 when)
{ {
@ -534,14 +546,14 @@ TimeAxisView::popup_display_menu (guint32 when)
build_display_menu (); build_display_menu ();
} }
editor.set_selected_track (*this, Selection::Add); conditionally_add_to_selection ();
display_menu->popup (1, when); display_menu->popup (1, when);
} }
gint gint
TimeAxisView::size_click (GdkEventButton *ev) TimeAxisView::size_click (GdkEventButton *ev)
{ {
editor.set_selected_track (*this, Selection::Add); conditionally_add_to_selection ();
popup_size_menu (ev->time); popup_size_menu (ev->time);
return TRUE; return TRUE;
} }

View file

@ -336,6 +336,8 @@ class TimeAxisView : public virtual AxisView
ARDOUR::AnalysisFeatureList analysis_features; ARDOUR::AnalysisFeatureList analysis_features;
void reshow_feature_lines (); void reshow_feature_lines ();
void conditionally_add_to_selection ();
}; /* class TimeAxisView */ }; /* class TimeAxisView */
#endif /* __ardour_gtk_time_axis_h__ */ #endif /* __ardour_gtk_time_axis_h__ */