case MouseTimeFX:
c = _cursors->midi_resize;
break;
+
+ case MouseRange:
+ c = _cursors->grabber_note;
+ break;
default:
break;
switch (mouse_mode) {
case MouseRange:
current_canvas_cursor = _cursors->selector;
+ if (_internal_editing) {
+ current_canvas_cursor = which_grabber_cursor();
+ }
break;
case MouseObject:
break;
}
- switch (_join_object_range_state) {
- case JOIN_OBJECT_RANGE_NONE:
- break;
- case JOIN_OBJECT_RANGE_OBJECT:
- current_canvas_cursor = which_grabber_cursor ();
- break;
- case JOIN_OBJECT_RANGE_RANGE:
- current_canvas_cursor = _cursors->selector;
- break;
+ if (!_internal_editing) {
+ switch (_join_object_range_state) {
+ case JOIN_OBJECT_RANGE_NONE:
+ break;
+ case JOIN_OBJECT_RANGE_OBJECT:
+ current_canvas_cursor = which_grabber_cursor ();
+ break;
+ case JOIN_OBJECT_RANGE_RANGE:
+ current_canvas_cursor = _cursors->selector;
+ break;
+ }
}
/* up-down cursor as a cue that automation can be dragged up and down when in join object/range mode */
- if ( get_smart_mode() ) {
+ if (!_internal_editing && get_smart_mode() ) {
double x, y;
get_pointer_position (x, y);
ArdourCanvas::Item* i = track_canvas->get_item_at (x, y);
switch (item_type) {
case RegionItem:
- if (press) {
- if (mouse_mode != MouseRange) {
- set_selected_regionview_from_click (press, op);
+ if (!get_smart_mode() || (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT)) {
+ if (press) {
+ if (mouse_mode != MouseRange) {
+ set_selected_regionview_from_click (press, op);
+ } else {
+ /* don't change the selection unless the
+ clicked track is not currently selected. if
+ so, "collapse" the selection to just this
+ track
+ */
+ if (!selection->selected (clicked_axisview)) {
+ set_selected_track_as_side_effect (Selection::Set);
+ }
+ }
} else {
- /* don't change the selection unless the
- clicked track is not currently selected. if
- so, "collapse" the selection to just this
- track
- */
- if (!selection->selected (clicked_axisview)) {
- set_selected_track_as_side_effect (Selection::Set);
+ if (mouse_mode != MouseRange) {
+ set_selected_regionview_from_click (press, op);
}
}
- } else {
- if (mouse_mode != MouseRange) {
- set_selected_regionview_from_click (press, op);
- }
}
break;
}
}
+#ifdef WITH_VIDEOTIMELINE
+ case VideoBarItem:
+ _drags->set (new VideoTimeLineDrag (this, item), event);
+ return true;
+ break;
+#endif
+
case MarkerBarItem:
case TempoBarItem:
case MeterBarItem:
eff = MouseObject;
}
+ /* there is no Range mode when in internal edit mode */
+ if (eff == MouseRange && internal_editing()) {
+ eff = MouseObject;
+ }
+
switch (eff) {
case MouseRange:
switch (item_type) {
break;
case SelectionItem:
- if (Keyboard::modifier_state_contains
- (event->button.state, Keyboard::ModifierMask(Keyboard::PrimaryModifier))) {
- // contains and not equals because I can't use alt as a modifier alone.
+ if (Keyboard::modifier_state_contains (event->button.state, Keyboard::ModifierMask(Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
start_selection_grab (item, event);
} else if (Keyboard::modifier_state_equals (event->button.state, Keyboard::SecondaryModifier)) {
/* grab selection for moving */
return true;
}
} else {
- _drags->set (new SelectionDrag (this, item, SelectionDrag::CreateSelection), event);
+ if (Keyboard::modifier_state_equals (event->button.state, Keyboard::RangeSelectModifier)) {
+ _drags->set (new SelectionDrag (this, item, SelectionDrag::SelectionExtend), event);
+ } else {
+ _drags->set (new SelectionDrag (this, item, SelectionDrag::CreateSelection), event);
+ }
return true;
}
break;
case RegionViewNameHighlight:
if (!clicked_regionview->region()->locked()) {
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
- _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
- return true;
- }
- break;
-
- case LeftFrameHandle:
- case RightFrameHandle:
- if (!internal_editing() && !clicked_regionview->region()->locked()) {
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
_drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
return true;
}
default:
if (!internal_editing()) {
- _drags->set (new SelectionDrag (this, item, SelectionDrag::CreateSelection), event);
+ if (Keyboard::modifier_state_equals (event->button.state, Keyboard::RangeSelectModifier)) {
+ _drags->set (new SelectionDrag (this, item, SelectionDrag::SelectionExtend), event);
+ } else {
+ _drags->set (new SelectionDrag (this, item, SelectionDrag::CreateSelection), event);
+ }
}
}
return true;
return true;
}
break;
+ case StreamItem:
+ if (internal_editing()) {
+ if (dynamic_cast<MidiTimeAxisView*> (clicked_axisview)) {
+ _drags->set (new RegionCreateDrag (this, item, clicked_axisview), event);
+ }
+ return true;
+ }
+ break;
default:
break;
switch (item_type) {
case FadeInHandleItem:
{
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
_drags->set (new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_in);
return true;
}
case FadeOutHandleItem:
{
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
_drags->set (new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s), event, _cursors->fade_out);
return true;
}
case StartCrossFadeItem:
- _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, true), event, 0);
- break;
-
case EndCrossFadeItem:
- _drags->set (new CrossfadeEdgeDrag (this, reinterpret_cast<AudioRegionView*>(item->get_data("regionview")), item, false), event, 0);
+ /* 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()) {
+// RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+// _drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer(), true), event);
+// return true;
+// }
break;
case FeatureLineItem:
case LeftFrameHandle:
case RightFrameHandle:
if (!clicked_regionview->region()->locked()) {
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
_drags->set (new TrimDrag (this, item, clicked_regionview, s.by_layer()), event);
return true;
}
case RegionViewName:
{
/* rename happens on edit clicks */
- RegionSelection s = get_equivalent_regions (selection->regions, Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, Properties::select.property_id);
_drags->set (new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, s.by_layer()), event);
return true;
break;
case RangeMarkerBarItem:
case CdMarkerBarItem:
case TransportMarkerBarItem:
+ case StreamItem:
/* button press on these events never does anything to
change the editing mode.
*/
break;
-
- case StreamItem:
- leave_internal_edit_mode = true;
- break;
default:
break;
case CdMarkerBarItem:
case TempoBarItem:
case MeterBarItem:
+#ifdef WITH_VIDEOTIMELINE
+ case VideoBarItem:
+#endif
popup_ruler_menu (where, item_type);
break;
JoinObjectRangeState const old = _join_object_range_state;
update_join_object_range_location (event->motion.x, event->motion.y);
- if (_join_object_range_state != old) {
+
+ if (!_internal_editing && _join_object_range_state != old) {
set_canvas_cursor ();
}
- if (_over_region_trim_target) {
+ if (!_internal_editing && _over_region_trim_target) {
set_canvas_cursor_for_region_view (event->motion.x, entered_regionview);
}
if (Config->get_edit_mode() == Splice) {
_drags->add (new RegionSpliceDrag (this, item, region_view, selection->regions.by_layer()));
} else {
- RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, false));
}
_region_motion_group->raise_to_top ();
- RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), false, true));
}
return;
}
- RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::edit.property_id);
+ RegionSelection s = get_equivalent_regions (selection->regions, ARDOUR::Properties::select.property_id);
_drags->add (new RegionMoveDrag (this, item, region_view, s.by_layer(), true, false));
begin_reversible_command (Operations::drag_region_brush);