Make mouse operations on grouped regions apply to pre-existing selection
On clicking on a region that is part of an active edit group with the 'selection' property enabled, its equivalent regions also become selected. Thus, there's no need to reset the selection to the equivalent regions when performing mouse drags on the region, and trim/fade in/fade out/move/copy will always operate on the existing region selection if there is one. Fixes #5515.
This commit is contained in:
parent
298da23619
commit
97ec274512
@ -861,8 +861,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||||||
|
|
||||||
case RegionViewNameHighlight:
|
case RegionViewNameHighlight:
|
||||||
if (!clicked_regionview->region()->locked()) {
|
if (!clicked_regionview->region()->locked()) {
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
||||||
_drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -935,15 +934,13 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||||||
switch (item_type) {
|
switch (item_type) {
|
||||||
case FadeInHandleItem:
|
case FadeInHandleItem:
|
||||||
{
|
{
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
|
_drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), selection->regions), event, _cursors->fade_in);
|
||||||
_drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_in);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
case FadeOutHandleItem:
|
case FadeOutHandleItem:
|
||||||
{
|
{
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
|
_drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), selection->regions), event, _cursors->fade_out);
|
||||||
_drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_out);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -951,8 +948,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||||||
case EndCrossFadeItem:
|
case EndCrossFadeItem:
|
||||||
/* we might allow user to grab inside the fade to trim a region with preserve_fade_anchor. for not this is not fully implemented */
|
/* we might allow user to grab inside the fade to trim a region with preserve_fade_anchor. for not this is not fully implemented */
|
||||||
// if (!clicked_regionview->region()->locked()) {
|
// if (!clicked_regionview->region()->locked()) {
|
||||||
// RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
|
// _drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer(), true), event);
|
||||||
// _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer(), true), event);
|
|
||||||
// return true;
|
// return true;
|
||||||
// }
|
// }
|
||||||
break;
|
break;
|
||||||
@ -1002,8 +998,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||||||
case LeftFrameHandle:
|
case LeftFrameHandle:
|
||||||
case RightFrameHandle:
|
case RightFrameHandle:
|
||||||
if (!clicked_regionview->region()->locked()) {
|
if (!clicked_regionview->region()->locked()) {
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
|
_drags->set (new TrimDrag (this, item, clicked_regionview, selection->regions.by_layer()), event);
|
||||||
_drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1011,8 +1006,7 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
|
|||||||
case RegionViewName:
|
case RegionViewName:
|
||||||
{
|
{
|
||||||
/* rename happens on edit clicks */
|
/* rename happens on edit clicks */
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
|
_drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, selection->regions.by_layer()), event);
|
||||||
_drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, s.by_layer()), event);
|
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2598,8 +2592,7 @@ Editor::add_region_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* region
|
|||||||
if (Config->get_edit_mode() == Splice) {
|
if (Config->get_edit_mode() == Splice) {
|
||||||
_drags->add (new RegionSpliceDrag (this, item, region_view, selection->regions.by_layer()));
|
_drags->add (new RegionSpliceDrag (this, item, region_view, selection->regions.by_layer()));
|
||||||
} else {
|
} else {
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
|
_drags->add (new RegionMoveDrag (this, item, region_view, selection->regions.by_layer(), false, false));
|
||||||
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sync the canvas to what we think is its current state */
|
/* sync the canvas to what we think is its current state */
|
||||||
@ -2617,8 +2610,7 @@ Editor::add_region_copy_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView* r
|
|||||||
|
|
||||||
_region_motion_group->raise_to_top ();
|
_region_motion_group->raise_to_top ();
|
||||||
|
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
|
_drags->add (new RegionMoveDrag (this, item, region_view, selection->regions.by_layer(), false, true));
|
||||||
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, true));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -2634,8 +2626,7 @@ Editor::add_region_brush_drag (ArdourCanvas::Item* item, GdkEvent*, RegionView*
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
|
_drags->add (new RegionMoveDrag (this, item, region_view, selection->regions.by_layer(), true, false));
|
||||||
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), true, false));
|
|
||||||
|
|
||||||
begin_reversible_command (Operations::drag_region_brush);
|
begin_reversible_command (Operations::drag_region_brush);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user