summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_mouse.cc409
1 files changed, 205 insertions, 204 deletions
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index 5210515541..1b0f5bb229 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -601,278 +601,279 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT
break;
}
- if (internal_editing()) {
+ switch (mouse_mode) {
+ case MouseRange:
switch (item_type) {
- case StreamItem:
+ case StartSelectionTrimItem:
assert (_drag == 0);
- _drag = new RegionCreateDrag (this, item, clicked_axisview);
+ _drag = new SelectionDrag (this, item, SelectionDrag::SelectionStartTrim);
_drag->start_grab (event);
- return true;
- case NoteItem:
- /* Note: we don't get here if not in internal_editing() mode */
- if (mouse_mode == MouseTimeFX) {
+ break;
+
+ case EndSelectionTrimItem:
+ assert (_drag == 0);
+ _drag = new SelectionDrag (this, item, SelectionDrag::SelectionEndTrim);
+ _drag->start_grab (event);
+ break;
+
+ case SelectionItem:
+ if (Keyboard::modifier_state_contains
+ (event->button.state, Keyboard::ModifierMask(Keyboard::SecondaryModifier))) {
+ // contains and not equals because I can't use alt as a modifier alone.
+ start_selection_grab (item, event);
+ } else if (Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) {
+ /* grab selection for moving */
assert (_drag == 0);
- _drag = new NoteResizeDrag (this, item);
+ _drag = new SelectionDrag (this, item, SelectionDrag::SelectionMove);
_drag->start_grab (event);
- return true;
- } else if (mouse_mode == MouseObject) {
+ } else {
+ /* this was debated, but decided the more common action was to
+ make a new selection */
assert (_drag == 0);
- _drag = new NoteDrag (this, item);
+ _drag = new SelectionDrag (this, item, SelectionDrag::CreateSelection);
_drag->start_grab (event);
- return true;
- } else {
- return false;
}
break;
+
default:
- return true;
+ assert (_drag == 0);
+ _drag = new SelectionDrag (this, item, SelectionDrag::CreateSelection);
+ _drag->start_grab (event);
}
- } else {
- switch (mouse_mode) {
- case MouseRange:
- switch (item_type) {
- case StartSelectionTrimItem:
- assert (_drag == 0);
- _drag = new SelectionDrag (this, item, SelectionDrag::SelectionStartTrim);
- _drag->start_grab (event);
- break;
+ return true;
+ break;
- case EndSelectionTrimItem:
+ case MouseObject:
+ switch (item_type) {
+ case NoteItem:
+ if (internal_editing()) {
+ /* Note: we don't get here if not in internal_editing() mode */
assert (_drag == 0);
- _drag = new SelectionDrag (this, item, SelectionDrag::SelectionEndTrim);
+ _drag = new NoteDrag (this, item);
_drag->start_grab (event);
- break;
+ return true;
+ }
+ break;
+
+ default:
+ break;
+ }
- case SelectionItem:
- if (Keyboard::modifier_state_contains
- (event->button.state, Keyboard::ModifierMask(Keyboard::SecondaryModifier))) {
- // contains and not equals because I can't use alt as a modifier alone.
- start_selection_grab (item, event);
- } else if (Keyboard::modifier_state_equals (event->button.state, Keyboard::PrimaryModifier)) {
- /* grab selection for moving */
- assert (_drag == 0);
- _drag = new SelectionDrag (this, item, SelectionDrag::SelectionMove);
- _drag->start_grab (event);
- } else {
- /* this was debated, but decided the more common action was to
- make a new selection */
- assert (_drag == 0);
- _drag = new SelectionDrag (this, item, SelectionDrag::CreateSelection);
- _drag->start_grab (event);
- }
- break;
+ if (Keyboard::modifier_state_contains (event->button.state, Keyboard::ModifierMask(Keyboard::PrimaryModifier|Keyboard::SecondaryModifier)) &&
+ event->type == GDK_BUTTON_PRESS) {
- default:
+ assert (_drag == 0);
+ _drag = new RubberbandSelectDrag (this, item);
+ _drag->start_grab (event);
+
+ } else if (event->type == GDK_BUTTON_PRESS) {
+
+ switch (item_type) {
+ case FadeInHandleItem:
+ {
assert (_drag == 0);
- _drag = new SelectionDrag (this, item, SelectionDrag::CreateSelection);
+ RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
+ _drag = new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s);
_drag->start_grab (event);
+ return true;
}
- return true;
- break;
-
- case MouseObject:
- if (Keyboard::modifier_state_contains (event->button.state, Keyboard::ModifierMask(Keyboard::PrimaryModifier|Keyboard::SecondaryModifier)) &&
- event->type == GDK_BUTTON_PRESS) {
+ case FadeOutHandleItem:
+ {
assert (_drag == 0);
- _drag = new RubberbandSelectDrag (this, item);
+ RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
+ _drag = new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s);
_drag->start_grab (event);
-
- } else if (event->type == GDK_BUTTON_PRESS) {
-
- switch (item_type) {
- case FadeInHandleItem:
- {
- assert (_drag == 0);
- RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
- _drag = new FadeInDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s);
- _drag->start_grab (event);
- return true;
- }
-
- case FadeOutHandleItem:
- {
- assert (_drag == 0);
- RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
- _drag = new FadeOutDrag (this, item, reinterpret_cast<RegionView*> (item->get_data("regionview")), s);
- _drag->start_grab (event);
- return true;
- }
-
- case RegionItem:
- if (Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)) {
- start_region_copy_grab (item, event, clicked_regionview);
- } else if (Keyboard::the_keyboard().key_is_down (GDK_b)) {
- start_region_brush_grab (item, event, clicked_regionview);
- } else {
- start_region_grab (item, event, clicked_regionview);
- }
- break;
-
- case RegionViewNameHighlight:
- {
- assert (_drag == 0);
- RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
- _drag = new TrimDrag (this, item, clicked_regionview, s.by_layer());
- _drag->start_grab (event);
- return true;
- break;
- }
-
- case RegionViewName:
- {
- /* rename happens on edit clicks */
- assert (_drag == 0);
- RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
- _drag = new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, s.by_layer());
- _drag->start_grab (event);
- return true;
- break;
- }
-
- case ControlPointItem:
- assert (_drag == 0);
- _drag = new ControlPointDrag (this, item);
- _drag->start_grab (event);
- return true;
- break;
-
- case AutomationLineItem:
- assert (_drag == 0);
- _drag = new LineDrag (this, item);
- _drag->start_grab (event);
- return true;
- break;
-
- case StreamItem:
- case AutomationTrackItem:
- assert (_drag == 0);
- _drag = new RubberbandSelectDrag (this, item);
- _drag->start_grab (event);
- break;
-
-#ifdef WITH_CMT
- case ImageFrameHandleStartItem:
- imageframe_start_handle_op(item, event) ;
- return(true) ;
- break ;
- case ImageFrameHandleEndItem:
- imageframe_end_handle_op(item, event) ;
- return(true) ;
- break ;
- case MarkerViewHandleStartItem:
- markerview_item_start_handle_op(item, event) ;
- return(true) ;
- break ;
- case MarkerViewHandleEndItem:
- markerview_item_end_handle_op(item, event) ;
- return(true) ;
- break ;
- case MarkerViewItem:
- start_markerview_grab(item, event) ;
- break ;
- case ImageFrameItem:
- start_imageframe_grab(item, event) ;
- break ;
-#endif
-
- case MarkerBarItem:
-
- break;
-
- default:
- break;
- }
+ return true;
}
- return true;
- break;
- case MouseGain:
- switch (item_type) {
case RegionItem:
- /* start a grab so that if we finish after moving
- we can tell what happened.
- */
- assert (_drag == 0);
- _drag = new RegionGainDrag (this, item);
- _drag->start_grab (event, current_canvas_cursor);
+ if (Keyboard::modifier_state_contains (event->button.state, Keyboard::CopyModifier)) {
+ start_region_copy_grab (item, event, clicked_regionview);
+ } else if (Keyboard::the_keyboard().key_is_down (GDK_b)) {
+ start_region_brush_grab (item, event, clicked_regionview);
+ } else {
+ start_region_grab (item, event, clicked_regionview);
+ }
break;
- case GainLineItem:
+ case RegionViewNameHighlight:
+ {
assert (_drag == 0);
- _drag = new LineDrag (this, item);
+ RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
+ _drag = new TrimDrag (this, item, clicked_regionview, s.by_layer());
_drag->start_grab (event);
return true;
+ break;
+ }
- case ControlPointItem:
+ case RegionViewName:
+ {
+ /* rename happens on edit clicks */
assert (_drag == 0);
- _drag = new ControlPointDrag (this, item);
+ RegionSelection s = get_equivalent_regions (selection->regions, RouteGroup::Edit);
+ _drag = new TrimDrag (this, clicked_regionview->get_name_highlight(), clicked_regionview, s.by_layer());
_drag->start_grab (event);
return true;
break;
-
- default:
- break;
}
- return true;
- break;
- switch (item_type) {
case ControlPointItem:
assert (_drag == 0);
_drag = new ControlPointDrag (this, item);
_drag->start_grab (event);
+ return true;
break;
case AutomationLineItem:
assert (_drag == 0);
_drag = new LineDrag (this, item);
_drag->start_grab (event);
+ return true;
break;
- case RegionItem:
- // XXX need automation mode to identify which
- // line to use
- // start_line_grab_from_regionview (item, event);
+ case StreamItem:
+ if (internal_editing()) {
+ assert (_drag == 0);
+ _drag = new RegionCreateDrag (this, item, clicked_axisview);
+ _drag->start_grab (event);
+ return true;
+ }
+ /* fallthru */
+ case AutomationTrackItem:
+ assert (_drag == 0);
+ _drag = new RubberbandSelectDrag (this, item);
+ _drag->start_grab (event);
+ break;
+
+#ifdef WITH_CMT
+ case ImageFrameHandleStartItem:
+ imageframe_start_handle_op(item, event) ;
+ return(true) ;
+ break ;
+ case ImageFrameHandleEndItem:
+ imageframe_end_handle_op(item, event) ;
+ return(true) ;
+ break ;
+ case MarkerViewHandleStartItem:
+ markerview_item_start_handle_op(item, event) ;
+ return(true) ;
+ break ;
+ case MarkerViewHandleEndItem:
+ markerview_item_end_handle_op(item, event) ;
+ return(true) ;
+ break ;
+ case MarkerViewItem:
+ start_markerview_grab(item, event) ;
+ break ;
+ case ImageFrameItem:
+ start_imageframe_grab(item, event) ;
+ break ;
+#endif
+
+ case MarkerBarItem:
+
break;
default:
break;
}
- return true;
+ }
+ return true;
+ break;
+
+ case MouseGain:
+ switch (item_type) {
+ case RegionItem:
+ /* start a grab so that if we finish after moving
+ we can tell what happened.
+ */
+ assert (_drag == 0);
+ _drag = new RegionGainDrag (this, item);
+ _drag->start_grab (event, current_canvas_cursor);
break;
- case MouseZoom:
- if (event->type == GDK_BUTTON_PRESS) {
- assert (_drag == 0);
- _drag = new MouseZoomDrag (this, item);
- _drag->start_grab (event);
- }
+ case GainLineItem:
+ assert (_drag == 0);
+ _drag = new LineDrag (this, item);
+ _drag->start_grab (event);
+ return true;
+ case ControlPointItem:
+ assert (_drag == 0);
+ _drag = new ControlPointDrag (this, item);
+ _drag->start_grab (event);
return true;
break;
- case MouseTimeFX:
- if (item_type == RegionItem) {
- assert (_drag == 0);
- _drag = new TimeFXDrag (this, item, clicked_regionview, selection->regions.by_layer());
- _drag->start_grab (event);
- }
+ default:
+ break;
+ }
+ return true;
+ break;
+
+ switch (item_type) {
+ case ControlPointItem:
+ assert (_drag == 0);
+ _drag = new ControlPointDrag (this, item);
+ _drag->start_grab (event);
break;
- case MouseAudition:
- _drag = new ScrubDrag (this, item);
+ case AutomationLineItem:
+ assert (_drag == 0);
+ _drag = new LineDrag (this, item);
_drag->start_grab (event);
- scrub_reversals = 0;
- scrub_reverse_distance = 0;
- last_scrub_x = event->button.x;
- scrubbing_direction = 0;
- track_canvas->get_window()->set_cursor (*transparent_cursor);
+ break;
+
+ case RegionItem:
+ // XXX need automation mode to identify which
+ // line to use
+ // start_line_grab_from_regionview (item, event);
break;
default:
break;
}
+ return true;
+ break;
+
+ case MouseZoom:
+ if (event->type == GDK_BUTTON_PRESS) {
+ assert (_drag == 0);
+ _drag = new MouseZoomDrag (this, item);
+ _drag->start_grab (event);
+ }
+
+ return true;
+ break;
+
+ case MouseTimeFX:
+ if (internal_editing() && item_type == NoteItem) {
+ assert (_drag == 0);
+ _drag = new NoteResizeDrag (this, item);
+ _drag->start_grab (event);
+ return true;
+ } else if (!internal_editing() && item_type == RegionItem) {
+ assert (_drag == 0);
+ _drag = new TimeFXDrag (this, item, clicked_regionview, selection->regions.by_layer());
+ _drag->start_grab (event);
+ return true;
+ }
+ break;
+
+ case MouseAudition:
+ _drag = new ScrubDrag (this, item);
+ _drag->start_grab (event);
+ scrub_reversals = 0;
+ scrub_reverse_distance = 0;
+ last_scrub_x = event->button.x;
+ scrubbing_direction = 0;
+ track_canvas->get_window()->set_cursor (*transparent_cursor);
+ return true;
+ break;
+
+ default:
+ break;
}
return false;