View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003298 | ardour | bugs | public | 2010-07-01 07:36 | 2011-03-05 00:05 |
Reporter | lincoln | Assigned To | |||
Priority | normal | Severity | tweak | Reproducibility | always |
Status | feedback | Resolution | open | ||
Target Version | 3.X | ||||
Summary | 0003298: Automatic range selection in object mode | ||||
Description | When in the combined object/range mode is selected, clicking on a region in the lower half of the region (i.e. in object mode) automatically creates a range on the whole region. This should not be happening since should be in object mode. | ||||
Tags | No tags attached. | ||||
|
Will have to check with the PT gang on whether this was intended. |
|
I have a simple fix for this but putting a patch out is difficult since there are pending patches for region transient stuff still to be applied. If it is intended then PT is weird and they should fix this too :-) |
|
lincoln - i believe your region transient stuff is now in svn. can we see your patch? |
2010-11-06 15:49
|
auto-range-creating-on-selection-fix.patch (5,057 bytes)
Index: gtk2_ardour/editor_mouse.cc =================================================================== --- gtk2_ardour/editor_mouse.cc (revision 7976) +++ gtk2_ardour/editor_mouse.cc (working copy) @@ -363,7 +363,7 @@ instant_save (); - if (!internal_editing()) { + if (!internal_editing()) { if (mouse_mode != MouseRange && _join_object_range_state == JOIN_OBJECT_RANGE_NONE) { /* in all modes except range and joined object/range, hide the range selection, @@ -373,6 +373,7 @@ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { (*i)->set_should_show_selection (true); } + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { (*i)->hide_selection (); } @@ -484,7 +485,7 @@ if (event->type == GDK_BUTTON_PRESS || event->type == GDK_BUTTON_RELEASE) { if ((event->button.state & Keyboard::RelevantModifierKeyMask) && event->button.button != 1) { - + /* almost no selection action on modified button-2 or button-3 events */ if (item_type != RegionItem && event->button.button != 2) { @@ -500,33 +501,32 @@ switch (item_type) { case RegionItem: + if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { set_selected_regionview_from_click (press, op, true); } else if (event->type == GDK_BUTTON_PRESS) { selection->clear_tracks (); set_selected_track_as_side_effect (op, true); } - if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) { - clicked_selection = select_range_around_region (selection->regions.front()); - } break; case RegionViewNameHighlight: case RegionViewName: case LeftFrameHandle: case RightFrameHandle: - if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { - set_selected_regionview_from_click (press, op, true); + + if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { + set_selected_regionview_from_click (press, op, true); } else if (event->type == GDK_BUTTON_PRESS) { - set_selected_track_as_side_effect (op); + set_selected_track_as_side_effect (op); } break; - case FadeInHandleItem: case FadeInItem: case FadeOutHandleItem: case FadeOutItem: + if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { set_selected_regionview_from_click (press, op, true); } else if (event->type == GDK_BUTTON_PRESS) { @@ -535,6 +535,7 @@ break; case ControlPointItem: + set_selected_track_as_side_effect (op, true); if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { set_selected_control_point_from_click (op, false); @@ -818,10 +819,6 @@ add_region_drag (item, event, clicked_regionview); } - if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) { - _drags->add (new SelectionDrag (this, clicked_axisview->get_selection_rect (clicked_selection)->rect, SelectionDrag::SelectionMove)); - } - _drags->start_grab (event); break; @@ -882,30 +879,6 @@ if (atv) { _drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, up_down_cursor); } - - /* if we're over a track and a region, and in the `object' part of a region, - put a selection around the region and drag both - */ - RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tvp.first); - if (rtv && _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) { - boost::shared_ptr<Track> t = boost::dynamic_pointer_cast<Track> (rtv->route ()); - if (t) { - boost::shared_ptr<Playlist> pl = t->playlist (); - if (pl) { - - boost::shared_ptr<Region> r = pl->top_region_at (event_frame (event)); - if (r) { - RegionView* rv = rtv->view()->find_view (r); - clicked_selection = select_range_around_region (rv); - _drags->add (new SelectionDrag (this, item, SelectionDrag::SelectionMove)); - list<RegionView*> rvs; - rvs.push_back (rv); - _drags->add (new RegionMoveDrag (this, item, rv, rvs, false, false)); - _drags->start_grab (event); - } - } - } - } } } break; @@ -2609,7 +2582,7 @@ double speed = rtv->track()->speed(); playlist->clear_changes (); - boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region())); + boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region(), true)); playlist->add_region (new_region, (framepos_t) (pos * speed)); _session->add_command (new StatefulDiffCommand (playlist)); |
|
I'm reasonably sure that there's a reason for this behaviour, but a PT person would have to confirm. |
|
this is intended behaviour, and seems entirely logical to me. i don't really see what the issue is ... |
|
The behaviour seems to have changed slightly. Clicking in the lower half are range covering the region appears momentarily. If you move the region, the range becomes active at the end of the drag. All this seem very wrong and unexpected to me. If I am in a non range mode then why should ranges be appearing when doing object mode work? Also since the automatic range is spanning the region exactly, what practical use does it have? |
|
You began this bug report with the phrase "When in the combined object/range mode is selected ..." That's precisely the explanation of this behaviour. You are *not* in "non-range" mode, you're in a combined object/range mode in which the upper and lower half of the region have different semantics for mouse operations. This is a very powerful editing mode that a lot of PT "power users" complained that Ardour/Mixbus did not have. |
|
Carrying this discussion onwards post 3.0 ... |
Date Modified | Username | Field | Change |
---|---|---|---|
2010-07-01 07:36 | lincoln | New Issue | |
2010-07-04 23:48 | cth103 | cost | => 0.00 |
2010-07-04 23:48 | cth103 | Note Added: 0008388 | |
2010-07-04 23:48 | cth103 | Target Version | => 3.0-beta1 |
2010-07-05 00:12 | lincoln | Note Added: 0008389 | |
2010-07-05 00:32 | cth103 | Note Edited: 0008388 | |
2010-11-05 13:46 | paul | Note Added: 0009357 | |
2010-11-06 15:49 | lincoln | File Added: auto-range-creating-on-selection-fix.patch | |
2010-11-06 16:30 | cth103 | Note Added: 0009368 | |
2011-02-09 15:04 | paul | Note Added: 0010064 | |
2011-02-12 19:59 | paul | Status | new => feedback |
2011-02-13 00:48 | lincoln | Note Added: 0010080 | |
2011-02-13 14:11 | paul | Note Added: 0010082 | |
2011-03-05 00:05 | cth103 | Note Added: 0010284 | |
2011-03-05 00:05 | cth103 | Target Version | 3.0-beta1 => 3.X |