summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_canvas_events.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-08-28 16:06:08 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-08-28 16:06:08 +0000
commite7e071db1a07ec6d66b71982f204c2cbaa70adee (patch)
tree89bb307195d90c110fa7244a062397403390d21f /gtk2_ardour/editor_canvas_events.cc
parent710ba02c70545e06ea57193c61bddba706a49dec (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.cc50
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;
}