make most (all?) keymouse actions ensure that the entered regionview is selected before the action occurs

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2633 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2007-11-13 02:44:50 +00:00
parent 4f9eaf6858
commit c97fbffa9c
2 changed files with 27 additions and 0 deletions

View file

@ -1885,6 +1885,7 @@ class Editor : public PublicEditor
TimeAxisView* entered_track;
RegionView* entered_regionview;
void ensure_entered_selected ();
bool clear_entered_track;
gint left_track_canvas (GdkEventCrossing*);
void set_entered_track (TimeAxisView*);

View file

@ -2329,6 +2329,8 @@ Editor::separate_regions_using_location (Location& loc)
void
Editor::crop_region_to_selection ()
{
ensure_entered_selected ();
if (!selection->time.empty()) {
crop_region_to (selection->time.start(), selection->time.end_frame());
@ -2352,6 +2354,8 @@ Editor::crop_region_to (nframes_t start, nframes_t end)
boost::shared_ptr<Playlist> playlist;
TrackSelection* ts;
ensure_entered_selected ();
if (selection->tracks.empty()) {
ts = &track_views;
} else {
@ -2583,6 +2587,8 @@ Editor::naturalize ()
void
Editor::align (RegionPoint what)
{
ensure_entered_selected ();
nframes64_t where = get_preferred_edit_position();
if (!selection->regions.empty()) {
@ -2747,6 +2753,8 @@ Editor::trim_region_to_punch ()
void
Editor::trim_region_to_location (const Location& loc, const char* str)
{
ensure_entered_selected ();
RegionSelection& rs (get_regions_for_action ());
begin_reversible_command (str);
@ -3844,6 +3852,8 @@ Editor::toggle_region_opaque ()
void
Editor::set_fade_length (bool in)
{
ensure_entered_selected ();
/* we need a region to measure the offset from the start */
RegionView* rv;
@ -4068,6 +4078,8 @@ Editor::set_playhead_cursor ()
void
Editor::split ()
{
ensure_entered_selected ();
nframes64_t where = get_preferred_edit_position();
if (!selection->regions.empty()) {
@ -4081,3 +4093,17 @@ Editor::split ()
split_regions_at (where, rs);
}
}
void
Editor::ensure_entered_selected ()
{
if (entered_regionview) {
if (find (selection->regions.begin(), selection->regions.end(), entered_regionview) == selection->regions.end()) {
if (selection->regions.empty()) {
selection->set (entered_regionview);
} else {
selection->add (entered_regionview);
}
}
}
}