2 Copyright (C) 2000 Paul Davis
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #include <libgnomecanvas/libgnomecanvas.h>
26 #include <ardour/diskstream.h>
27 #include <ardour/audioplaylist.h>
30 #include "public_editor.h"
31 #include "regionview.h"
32 #include "streamview.h"
33 #include "crossfade_view.h"
34 #include "audio_time_axis.h"
35 #include "region_gain_line.h"
36 #include "automation_gain_line.h"
37 #include "automation_pan_line.h"
38 #include "automation_time_axis.h"
39 #include "redirect_automation_line.h"
44 using namespace ARDOUR;
48 Editor::_canvas_copy_region_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
50 Editor* editor = (Editor*)data;
51 return editor->canvas_copy_region_event (item, event);
55 Editor::_canvas_crossfade_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
57 CrossfadeView* xfv = static_cast<CrossfadeView*> (data);
58 Editor* editor = dynamic_cast<Editor*>(&xfv->get_time_axis_view().editor);
59 return editor->canvas_crossfade_view_event (item, event, xfv);
63 Editor::_canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
65 AudioRegionView* rv = static_cast<AudioRegionView*> (data);
66 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
67 return editor->canvas_fade_in_event (item, event, rv);
71 Editor::_canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
73 AudioRegionView* rv = static_cast<AudioRegionView*> (data);
74 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
75 return editor->canvas_fade_in_handle_event (item, event, rv);
79 Editor::_canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
81 AudioRegionView* rv = static_cast<AudioRegionView*> (data);
82 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
83 return editor->canvas_fade_out_event (item, event, rv);
87 Editor::_canvas_fade_out_handle_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
89 AudioRegionView* rv = static_cast<AudioRegionView*> (data);
90 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
91 return editor->canvas_fade_out_handle_event (item, event, rv);
95 Editor::_canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
97 AudioRegionView *rv = reinterpret_cast<AudioRegionView *>(data);
98 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
100 return editor->canvas_region_view_event (item, event, rv);
104 Editor::_canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
106 AudioRegionView *rv = reinterpret_cast<AudioRegionView *> (data);
107 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
109 return editor->canvas_region_view_name_highlight_event (item, event);
113 Editor::_canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
115 AudioRegionView *rv = reinterpret_cast<AudioRegionView *> (data);
116 Editor* editor = dynamic_cast<Editor*>(&rv->get_time_axis_view().editor);
118 return editor->canvas_region_view_name_event (item, event);
122 Editor::_canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
124 /* note that stream views are by definition audio track views */
126 AudioTimeAxisView *tv = (AudioTimeAxisView *) data;
127 Editor* editor = dynamic_cast<Editor*>(&tv->editor);
129 return editor->canvas_stream_view_event (item, event, tv);
133 Editor::_canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
135 AutomationTimeAxisView* atv = (AutomationTimeAxisView*) data;
136 Editor* editor = dynamic_cast<Editor*>(&atv->editor);
138 return editor->canvas_automation_track_event (item, event, atv);
142 Editor::_canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
144 ControlPoint *cp = reinterpret_cast<ControlPoint *>(data);
145 Editor* editor = dynamic_cast<Editor*>(&cp->line.trackview.editor);
147 switch (event->type) {
148 case GDK_BUTTON_PRESS:
149 case GDK_2BUTTON_PRESS:
150 case GDK_3BUTTON_PRESS:
151 clicked_control_point = cp;
152 clicked_trackview = &cp->line.trackview;
153 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
154 clicked_regionview = 0;
161 return editor->canvas_control_point_event (item, event);
165 Editor::_canvas_line_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
167 AutomationLine *line = reinterpret_cast<AutomationLine*> (data);
168 Editor* editor = dynamic_cast<Editor*>(&line->trackview.editor);
170 return editor->canvas_line_event (item, event);
174 Editor::_canvas_tempo_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
176 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
177 return editor->canvas_tempo_marker_event (item, event);
181 Editor::_canvas_meter_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
183 Editor* editor = dynamic_cast<Editor*>((PublicEditor *) data);
184 return editor->canvas_meter_marker_event (item, event);
188 Editor::_canvas_tempo_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
191 Editor* editor = (Editor*) data;
192 return editor->canvas_tempo_bar_event (item, event);
196 Editor::_canvas_meter_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
199 Editor* editor = (Editor*) data;
200 return editor->canvas_meter_bar_event (item, event);
204 Editor::_canvas_marker_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
206 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
207 return editor->canvas_marker_event (item, event);
211 Editor::_canvas_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
214 Editor* editor = (Editor*) data;
215 return editor->canvas_marker_bar_event (item, event);
219 Editor::_canvas_range_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
222 Editor* editor = (Editor*) data;
223 return editor->canvas_range_marker_bar_event (item, event);
227 Editor::_canvas_transport_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
230 Editor* editor = (Editor*) data;
231 return editor->canvas_transport_marker_bar_event (item, event);
235 Editor::_canvas_playhead_cursor_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
238 Editor* editor = (Editor*) data;
239 return editor->canvas_playhead_cursor_event (item, event);
243 Editor::_canvas_edit_cursor_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
246 Editor* editor = (Editor*) data;
247 return editor->canvas_edit_cursor_event (item, event);
251 Editor::_canvas_zoom_rect_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
253 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
254 return editor->canvas_zoom_rect_event (item, event);
258 Editor::_canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
260 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
261 return editor->canvas_selection_rect_event (item, event);
265 Editor::_canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
267 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
268 return editor->canvas_selection_start_trim_event (item, event);
272 Editor::_canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
274 Editor* editor = dynamic_cast<Editor*>((PublicEditor*) data);
275 return editor->canvas_selection_end_trim_event (item, event);
279 Editor::_track_canvas_event (GnomeCanvasItem *item, GdkEvent *event, gpointer data)
283 Editor* editor = (Editor*) data;
284 return editor->track_canvas_event (item, event);
287 /********** END OF.TATIC EVENT HANDLERS */
290 Editor::track_canvas_event (GnomeCanvasItem *item, GdkEvent *event)
294 switch (event->type) {
295 case GDK_MOTION_NOTIFY:
296 /* keep those motion events coming */
297 track_canvas->get_pointer (x, y);
298 return track_canvas_motion (item, event);
300 case GDK_BUTTON_RELEASE:
301 switch (event->button.button) {
304 button_release_handler (item, event, NoItem);
317 Editor::track_canvas_motion (GnomeCanvasItem *item, GdkEvent *ev)
319 if (verbose_cursor_visible) {
320 verbose_canvas_cursor->set_property ("x", ev->motion.x + 20);
321 verbose_canvas_cursor->set_property ("y", ev->motion.y + 20);
327 Editor::typed_event (GnomeCanvasItem *item, GdkEvent *event, ItemType type)
331 switch (event->type) {
332 case GDK_BUTTON_PRESS:
333 case GDK_2BUTTON_PRESS:
334 case GDK_3BUTTON_PRESS:
335 ret = button_press_handler (item, event, type);
337 case GDK_BUTTON_RELEASE:
338 ret = button_release_handler (item, event, type);
340 case GDK_MOTION_NOTIFY:
341 ret = motion_handler (item, event, type);
344 case GDK_ENTER_NOTIFY:
345 ret = enter_handler (item, event, type);
348 case GDK_LEAVE_NOTIFY:
349 ret = leave_handler (item, event, type);
360 Editor::canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
364 switch (event->type) {
365 case GDK_BUTTON_PRESS:
366 case GDK_2BUTTON_PRESS:
367 case GDK_3BUTTON_PRESS:
368 clicked_regionview = rv;
369 clicked_control_point = 0;
370 clicked_trackview = &rv->get_time_axis_view();
371 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
372 ret = button_press_handler (item, event, RegionItem);
375 case GDK_BUTTON_RELEASE:
376 ret = button_release_handler (item, event, RegionItem);
379 case GDK_MOTION_NOTIFY:
380 ret = motion_handler (item, event, RegionItem);
383 case GDK_ENTER_NOTIFY:
384 set_entered_regionview (rv);
387 case GDK_LEAVE_NOTIFY:
388 set_entered_regionview (0);
399 Editor::canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioTimeAxisView *tv)
403 switch (event->type) {
404 case GDK_BUTTON_PRESS:
405 case GDK_2BUTTON_PRESS:
406 case GDK_3BUTTON_PRESS:
407 clicked_regionview = 0;
408 clicked_control_point = 0;
409 clicked_trackview = tv;
410 clicked_audio_trackview = tv;
411 ret = button_press_handler (item, event, StreamItem);
414 case GDK_BUTTON_RELEASE:
415 ret = button_release_handler (item, event, StreamItem);
418 case GDK_MOTION_NOTIFY:
419 ret = motion_handler (item, event, StreamItem);
422 case GDK_ENTER_NOTIFY:
435 Editor::canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, AutomationTimeAxisView *atv)
439 switch (event->type) {
440 case GDK_BUTTON_PRESS:
441 case GDK_2BUTTON_PRESS:
442 case GDK_3BUTTON_PRESS:
443 clicked_regionview = 0;
444 clicked_control_point = 0;
445 clicked_trackview = atv;
446 clicked_audio_trackview = 0;
447 ret = button_press_handler (item, event, AutomationTrackItem);
450 case GDK_BUTTON_RELEASE:
451 ret = button_release_handler (item, event, AutomationTrackItem);
454 case GDK_MOTION_NOTIFY:
455 ret = motion_handler (item, event, AutomationTrackItem);
458 case GDK_ENTER_NOTIFY:
459 ret = enter_handler (item, event, AutomationTrackItem);
462 case GDK_LEAVE_NOTIFY:
463 ret = leave_handler (item, event, AutomationTrackItem);
474 Editor::canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
476 /* we handle only button 3 press/release events */
478 switch (event->type) {
479 case GDK_BUTTON_PRESS:
480 clicked_regionview = rv;
481 clicked_control_point = 0;
482 clicked_trackview = &rv->get_time_axis_view();
483 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
484 if (event->button.button == 3) {
485 return button_press_handler (item, event, FadeInItem);
489 case GDK_BUTTON_RELEASE:
490 if (event->button.button == 3) {
491 return button_release_handler (item, event, FadeInItem);
500 /* proxy for the regionview */
502 return canvas_region_view_event (rv->get_canvas_group(), event, rv);
506 Editor::canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
510 switch (event->type) {
511 case GDK_BUTTON_PRESS:
512 case GDK_2BUTTON_PRESS:
513 case GDK_3BUTTON_PRESS:
514 clicked_regionview = rv;
515 clicked_control_point = 0;
516 clicked_trackview = &rv->get_time_axis_view();
517 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
518 ret = button_press_handler (item, event, FadeInHandleItem);
521 case GDK_BUTTON_RELEASE:
522 ret = button_release_handler (item, event, FadeInHandleItem);
525 case GDK_MOTION_NOTIFY:
526 ret = motion_handler (item, event, FadeInHandleItem);
529 case GDK_ENTER_NOTIFY:
530 ret = enter_handler (item, event, FadeInHandleItem);
533 case GDK_LEAVE_NOTIFY:
534 ret = leave_handler (item, event, FadeInHandleItem);
545 Editor::canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
547 /* we handle only button 3 press/release events */
549 switch (event->type) {
550 case GDK_BUTTON_PRESS:
551 clicked_regionview = rv;
552 clicked_control_point = 0;
553 clicked_trackview = &rv->get_time_axis_view();
554 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
555 if (event->button.button == 3) {
556 return button_press_handler (item, event, FadeOutItem);
560 case GDK_BUTTON_RELEASE:
561 if (event->button.button == 3) {
562 return button_release_handler (item, event, FadeOutItem);
571 /* proxy for the regionview */
573 return canvas_region_view_event (rv->get_canvas_group(), event, rv);
577 Editor::canvas_fade_out_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
581 switch (event->type) {
582 case GDK_BUTTON_PRESS:
583 case GDK_2BUTTON_PRESS:
584 case GDK_3BUTTON_PRESS:
585 clicked_regionview = rv;
586 clicked_control_point = 0;
587 clicked_trackview = &rv->get_time_axis_view();
588 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
589 ret = button_press_handler (item, event, FadeOutHandleItem);
592 case GDK_BUTTON_RELEASE:
593 ret = button_release_handler (item, event, FadeOutHandleItem);
596 case GDK_MOTION_NOTIFY:
597 ret = motion_handler (item, event, FadeOutHandleItem);
600 case GDK_ENTER_NOTIFY:
601 ret = enter_handler (item, event, FadeOutHandleItem);
604 case GDK_LEAVE_NOTIFY:
605 ret = leave_handler (item, event, FadeOutHandleItem);
615 struct DescendingRegionLayerSorter {
616 bool operator()(Region* a, Region* b) {
617 return a->layer() > b->layer();
622 Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, CrossfadeView* xfv)
624 /* we handle only button 3 press/release events */
626 switch (event->type) {
627 case GDK_BUTTON_PRESS:
628 clicked_crossfadeview = xfv;
629 clicked_trackview = &clicked_crossfadeview->get_time_axis_view();
630 if (event->button.button == 3) {
631 return button_press_handler (item, event, CrossfadeViewItem);
635 case GDK_BUTTON_RELEASE:
636 if (event->button.button == 3) {
637 gint ret = button_release_handler (item, event, CrossfadeViewItem);
648 /* proxy for the upper most regionview */
650 /* XXX really need to check if we are in the name highlight,
651 and proxy to that when required.
654 TimeAxisView& tv (xfv->get_time_axis_view());
655 AudioTimeAxisView* atv;
657 if ((atv = dynamic_cast<AudioTimeAxisView*>(&tv)) != 0) {
659 if (atv->is_audio_track()) {
661 AudioPlaylist* pl = atv->get_diskstream()->playlist();
662 Playlist::RegionList* rl = pl->regions_at (event_frame (event));
665 DescendingRegionLayerSorter cmp;
668 AudioRegionView* arv = atv->view->find_view (*(dynamic_cast<AudioRegion*> (rl->front())));
674 return canvas_region_view_event (arv->get_canvas_group(), event, arv);
683 Editor::canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event)
688 if ((cp = static_cast<ControlPoint *> (gtk_object_get_data (GTK_OBJECT(item), "control_point"))) == 0) {
689 fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg;
693 if (dynamic_cast<AudioRegionGainLine*> (&cp->line) != 0) {
694 type = GainControlPointItem;
695 } else if (dynamic_cast<AutomationGainLine*> (&cp->line) != 0) {
696 type = GainAutomationControlPointItem;
697 } else if (dynamic_cast<AutomationPanLine*> (&cp->line) != 0) {
698 type = PanAutomationControlPointItem;
699 } else if (dynamic_cast<RedirectAutomationLine*> (&cp->line) != 0) {
700 type = RedirectAutomationControlPointItem;
705 return typed_event (item, event, type);
709 Editor::canvas_line_event (GnomeCanvasItem *item, GdkEvent *event)
714 if ((al = static_cast<AutomationLine *> (gtk_object_get_data (GTK_OBJECT(item), "line"))) == 0) {
715 fatal << _("programming error: line canvas item has no line object pointer!") << endmsg;
719 if (dynamic_cast<AudioRegionGainLine*> (al) != 0) {
721 } else if (dynamic_cast<AutomationGainLine*> (al) != 0) {
722 type = GainAutomationLineItem;
723 } else if (dynamic_cast<AutomationPanLine*> (al) != 0) {
724 type = PanAutomationLineItem;
725 } else if (dynamic_cast<RedirectAutomationLine*> (al) != 0) {
726 type = RedirectAutomationLineItem;
731 return typed_event (item, event, type);
736 Editor::canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event)
739 SelectionRect *rect = 0;
741 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
742 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
746 switch (event->type) {
747 case GDK_BUTTON_PRESS:
748 case GDK_2BUTTON_PRESS:
749 case GDK_3BUTTON_PRESS:
750 clicked_selection = rect->id;
751 ret = button_press_handler (item, event, SelectionItem);
753 case GDK_BUTTON_RELEASE:
754 ret = button_release_handler (item, event, SelectionItem);
756 case GDK_MOTION_NOTIFY:
757 ret = motion_handler (item, event, SelectionItem);
759 /* Don't need these at the moment. */
760 case GDK_ENTER_NOTIFY:
761 ret = enter_handler (item, event, SelectionItem);
764 case GDK_LEAVE_NOTIFY:
765 ret = leave_handler (item, event, SelectionItem);
776 Editor::canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *event)
779 SelectionRect *rect = 0;
781 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
782 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
786 switch (event->type) {
787 case GDK_BUTTON_PRESS:
788 case GDK_2BUTTON_PRESS:
789 case GDK_3BUTTON_PRESS:
790 clicked_selection = rect->id;
791 ret = button_press_handler (item, event, StartSelectionTrimItem);
793 case GDK_BUTTON_RELEASE:
794 ret = button_release_handler (item, event, StartSelectionTrimItem);
796 case GDK_MOTION_NOTIFY:
797 ret = motion_handler (item, event, StartSelectionTrimItem);
799 case GDK_ENTER_NOTIFY:
800 ret = enter_handler (item, event, StartSelectionTrimItem);
803 case GDK_LEAVE_NOTIFY:
804 ret = leave_handler (item, event, StartSelectionTrimItem);
815 Editor::canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event)
818 SelectionRect *rect = 0;
820 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
821 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
825 switch (event->type) {
826 case GDK_BUTTON_PRESS:
827 case GDK_2BUTTON_PRESS:
828 case GDK_3BUTTON_PRESS:
829 clicked_selection = rect->id;
830 ret = button_press_handler (item, event, EndSelectionTrimItem);
832 case GDK_BUTTON_RELEASE:
833 ret = button_release_handler (item, event, EndSelectionTrimItem);
835 case GDK_MOTION_NOTIFY:
836 ret = motion_handler (item, event, EndSelectionTrimItem);
838 case GDK_ENTER_NOTIFY:
839 ret = enter_handler (item, event, EndSelectionTrimItem);
842 case GDK_LEAVE_NOTIFY:
843 ret = leave_handler (item, event, EndSelectionTrimItem);
855 Editor::canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent *event)
859 switch (event->type) {
860 case GDK_BUTTON_PRESS:
861 case GDK_2BUTTON_PRESS:
862 case GDK_3BUTTON_PRESS:
863 clicked_regionview = reinterpret_cast<AudioRegionView *> (gtk_object_get_data(GTK_OBJECT(item), "regionview"));
864 clicked_control_point = 0;
865 clicked_trackview = &clicked_regionview->get_time_axis_view();
866 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
867 ret = button_press_handler (item, event, AudioRegionViewNameHighlight);
869 case GDK_BUTTON_RELEASE:
870 ret = button_release_handler (item, event, AudioRegionViewNameHighlight);
872 case GDK_MOTION_NOTIFY:
873 ret = motion_handler (item, event, AudioRegionViewNameHighlight);
875 case GDK_ENTER_NOTIFY:
876 ret = enter_handler (item, event, AudioRegionViewNameHighlight);
879 case GDK_LEAVE_NOTIFY:
880 ret = leave_handler (item, event, AudioRegionViewNameHighlight);
891 Editor::canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event)
895 switch (event->type) {
896 case GDK_BUTTON_PRESS:
897 case GDK_2BUTTON_PRESS:
898 case GDK_3BUTTON_PRESS:
899 clicked_regionview = reinterpret_cast<AudioRegionView *> (gtk_object_get_data(GTK_OBJECT(item), "regionview"));
900 clicked_control_point = 0;
901 clicked_trackview = &clicked_regionview->get_time_axis_view();
902 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
903 ret = button_press_handler (item, event, AudioRegionViewName);
905 case GDK_BUTTON_RELEASE:
906 ret = button_release_handler (item, event, AudioRegionViewName);
908 case GDK_MOTION_NOTIFY:
909 ret = motion_handler (item, event, AudioRegionViewName);
911 case GDK_ENTER_NOTIFY:
912 ret = enter_handler (item, event, AudioRegionViewName);
915 case GDK_LEAVE_NOTIFY:
916 ret = leave_handler (item, event, AudioRegionViewName);
927 Editor::canvas_marker_event (GnomeCanvasItem *item, GdkEvent *event)
929 return typed_event (item, event, MarkerItem);
933 Editor::canvas_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
935 return typed_event (item, event, MarkerBarItem);
939 Editor::canvas_range_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
941 return typed_event (item, event, RangeMarkerBarItem);
945 Editor::canvas_transport_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
947 return typed_event (item, event, TransportMarkerBarItem);
951 Editor::canvas_tempo_marker_event (GnomeCanvasItem *item, GdkEvent *event)
953 return typed_event (item, event, TempoMarkerItem);
957 Editor::canvas_meter_marker_event (GnomeCanvasItem *item, GdkEvent *event)
959 return typed_event (item, event, MeterMarkerItem);
963 Editor::canvas_tempo_bar_event (GnomeCanvasItem *item, GdkEvent *event)
965 return typed_event (item, event, TempoBarItem);
969 Editor::canvas_meter_bar_event (GnomeCanvasItem *item, GdkEvent *event)
971 return typed_event (item, event, MeterBarItem);
975 Editor::canvas_playhead_cursor_event (GnomeCanvasItem *item, GdkEvent *event)
977 return typed_event (item, event, PlayheadCursorItem);
981 Editor::canvas_edit_cursor_event (GnomeCanvasItem *item, GdkEvent *event)
983 return typed_event (item, event, EditCursorItem);
987 Editor::canvas_zoom_rect_event (GnomeCanvasItem *item, GdkEvent *event)
989 return typed_event (item, event, NoItem);
993 Editor::canvas_copy_region_event (GnomeCanvasItem *item, GdkEvent *event)
995 return typed_event (item, event, RegionItem);