diff options
author | David Robillard <d@drobilla.net> | 2007-04-12 23:20:37 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-04-12 23:20:37 +0000 |
commit | 959a7909c1adca430a63f783fd16687242a7be3d (patch) | |
tree | b5048c3cc1bbb60bb680472b97ebba6ebb92d72f /gtk2_ardour/editor_canvas_events.cc | |
parent | 96ca08b9257e4048294cd1804a65d4ae6cd88814 (diff) |
Merged with trunk R1705.
Synced .po files with trunk.
Fixed more editor operations to be type agnostic (ie not audio only).
git-svn-id: svn://localhost/ardour2/branches/midi@1709 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_canvas_events.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 100 |
1 files changed, 65 insertions, 35 deletions
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 4a23e8b316..40bef304c5 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -20,6 +20,8 @@ #include <cstdlib> #include <cmath> +#include <pbd/stacktrace.h> + #include <ardour/audio_diskstream.h> #include <ardour/audioplaylist.h> @@ -129,43 +131,36 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) } bool -Editor::track_canvas_event (GdkEvent *event, ArdourCanvas::Item* item) +Editor::track_canvas_scroll_event (GdkEventScroll *event) { - gint x, y; - - /* this is the handler for events that are not handled by - items. - */ - - switch (event->type) { - case GDK_MOTION_NOTIFY: - /* keep those motion events coming */ - track_canvas.get_pointer (x, y); - return track_canvas_motion (event); - - case GDK_BUTTON_PRESS: - track_canvas.grab_focus(); - break; - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 4: - case 5: - button_release_handler (item, event, NoItem); - break; - } - break; + track_canvas.grab_focus(); + track_canvas_scroll (event); + return false; +} - case GDK_SCROLL: - track_canvas.grab_focus(); - track_canvas_scroll (&event->scroll); - break; +bool +Editor::track_canvas_button_press_event (GdkEventButton *event) +{ + track_canvas.grab_focus(); + return false; +} - default: - break; +bool +Editor::track_canvas_button_release_event (GdkEventButton *event) +{ + if (drag_info.item) { + end_grab (drag_info.item, (GdkEvent*) event); } + return false; +} - return FALSE; +bool +Editor::track_canvas_motion_notify_event (GdkEventMotion *event) +{ + int x, y; + /* keep those motion events coming */ + track_canvas.get_pointer (x, y); + return false; } bool @@ -214,7 +209,12 @@ Editor::typed_event (ArdourCanvas::Item* item, GdkEvent *event, ItemType type) bool Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, RegionView *rv) { - gint ret = FALSE; + bool ret = false; + + if (!rv->sensitive ()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: @@ -290,6 +290,7 @@ bool Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item, AutomationTimeAxisView *atv) { bool ret = false; + switch (event->type) { case GDK_BUTTON_PRESS: @@ -330,6 +331,10 @@ Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRe { /* we handle only button 3 press/release events */ + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: clicked_regionview = rv; @@ -362,6 +367,10 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, { bool ret = false; + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: @@ -401,6 +410,10 @@ Editor::canvas_fade_out_event (GdkEvent *event, ArdourCanvas::Item* item, AudioR { /* we handle only button 3 press/release events */ + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: clicked_regionview = rv; @@ -433,6 +446,10 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, { bool ret = false; + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: @@ -499,6 +516,11 @@ Editor::canvas_crossfade_view_event (GdkEvent* event, ArdourCanvas::Item* item, } + /* XXX do not forward double clicks */ + + if (event->type == GDK_2BUTTON_PRESS) { + return false; + } /* proxy for the upper most regionview */ @@ -524,10 +546,10 @@ Editor::canvas_crossfade_view_event (GdkEvent* event, ArdourCanvas::Item* item, RegionView* rv = atv->view()->find_view (rl->front()); - /* proxy */ - delete rl; + /* proxy */ + return canvas_region_view_event (event, rv->get_canvas_group(), rv); } } @@ -703,6 +725,10 @@ Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas:: { bool ret = false; + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: @@ -739,6 +765,10 @@ Editor::canvas_region_view_name_event (GdkEvent *event, ArdourCanvas::Item* item { bool ret = false; + if (!rv->sensitive()) { + return false; + } + switch (event->type) { case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: |