diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-28 16:06:08 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-08-28 16:06:08 +0000 |
commit | e7e071db1a07ec6d66b71982f204c2cbaa70adee (patch) | |
tree | 89bb307195d90c110fa7244a062397403390d21f /gtk2_ardour/editor_canvas_events.cc | |
parent | 710ba02c70545e06ea57193c61bddba706a49dec (diff) |
more MIDI editing tweaks ; flip mouse mode buttons around for MIDI so that "object" mode is the most likely mode for both region \& region editing ; frame handle events (from lincoln's region trimming patch) are now handled more explicitly
git-svn-id: svn://localhost/ardour2/branches/3.0@5600 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_canvas_events.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index e789fef314..9c0fe30be4 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -753,12 +753,60 @@ Editor::canvas_selection_end_trim_event (GdkEvent *event, ArdourCanvas::Item* it return ret; } +bool +Editor::canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item* item, RegionView* rv) +{ + bool ret = false; + + /* frame handles are not active when in internal edit mode, because actual notes + might be in the area occupied by the handle - we want them to be editable as normal. + */ + + if (internal_editing() || !rv->sensitive()) { + return false; + } + + /* NOTE: frame handles pretend to be the colored trim bar from an event handling + perspective. XXX change this ?? + */ + + switch (event->type) { + case GDK_BUTTON_PRESS: + case GDK_2BUTTON_PRESS: + case GDK_3BUTTON_PRESS: + clicked_regionview = rv; + clicked_control_point = 0; + clicked_axisview = &clicked_regionview->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); + ret = button_press_handler (item, event, RegionViewNameHighlight); + break; + case GDK_BUTTON_RELEASE: + ret = button_release_handler (item, event, RegionViewNameHighlight); + break; + case GDK_MOTION_NOTIFY: + ret = motion_handler (item, event); + break; + case GDK_ENTER_NOTIFY: + ret = enter_handler (item, event, RegionViewNameHighlight); + break; + + case GDK_LEAVE_NOTIFY: + ret = leave_handler (item, event, RegionViewNameHighlight); + break; + + default: + break; + } + + return ret; +} + bool Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item* item, RegionView* rv) { bool ret = false; - + if (!rv->sensitive()) { return false; } |