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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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->signal_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 gnome_canvas_item_set (verbose_canvas_cursor,
321 "x", ev->motion.x + 20,
322 "y", ev->motion.y + 20,
329 Editor::typed_event (GnomeCanvasItem *item, GdkEvent *event, ItemType type)
333 switch (event->type) {
334 case GDK_BUTTON_PRESS:
335 case GDK_2BUTTON_PRESS:
336 case GDK_3BUTTON_PRESS:
337 ret = button_press_handler (item, event, type);
339 case GDK_BUTTON_RELEASE:
340 ret = button_release_handler (item, event, type);
342 case GDK_MOTION_NOTIFY:
343 ret = motion_handler (item, event, type);
346 case GDK_ENTER_NOTIFY:
347 ret = enter_handler (item, event, type);
350 case GDK_LEAVE_NOTIFY:
351 ret = leave_handler (item, event, type);
362 Editor::canvas_region_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
366 switch (event->type) {
367 case GDK_BUTTON_PRESS:
368 case GDK_2BUTTON_PRESS:
369 case GDK_3BUTTON_PRESS:
370 clicked_regionview = rv;
371 clicked_control_point = 0;
372 clicked_trackview = &rv->get_time_axis_view();
373 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
374 ret = button_press_handler (item, event, RegionItem);
377 case GDK_BUTTON_RELEASE:
378 ret = button_release_handler (item, event, RegionItem);
381 case GDK_MOTION_NOTIFY:
382 ret = motion_handler (item, event, RegionItem);
385 case GDK_ENTER_NOTIFY:
386 set_entered_regionview (rv);
389 case GDK_LEAVE_NOTIFY:
390 set_entered_regionview (0);
401 Editor::canvas_stream_view_event (GnomeCanvasItem *item, GdkEvent *event, AudioTimeAxisView *tv)
405 switch (event->type) {
406 case GDK_BUTTON_PRESS:
407 case GDK_2BUTTON_PRESS:
408 case GDK_3BUTTON_PRESS:
409 clicked_regionview = 0;
410 clicked_control_point = 0;
411 clicked_trackview = tv;
412 clicked_audio_trackview = tv;
413 ret = button_press_handler (item, event, StreamItem);
416 case GDK_BUTTON_RELEASE:
417 ret = button_release_handler (item, event, StreamItem);
420 case GDK_MOTION_NOTIFY:
421 ret = motion_handler (item, event, StreamItem);
424 case GDK_ENTER_NOTIFY:
437 Editor::canvas_automation_track_event (GnomeCanvasItem *item, GdkEvent *event, AutomationTimeAxisView *atv)
441 switch (event->type) {
442 case GDK_BUTTON_PRESS:
443 case GDK_2BUTTON_PRESS:
444 case GDK_3BUTTON_PRESS:
445 clicked_regionview = 0;
446 clicked_control_point = 0;
447 clicked_trackview = atv;
448 clicked_audio_trackview = 0;
449 ret = button_press_handler (item, event, AutomationTrackItem);
452 case GDK_BUTTON_RELEASE:
453 ret = button_release_handler (item, event, AutomationTrackItem);
456 case GDK_MOTION_NOTIFY:
457 ret = motion_handler (item, event, AutomationTrackItem);
460 case GDK_ENTER_NOTIFY:
461 ret = enter_handler (item, event, AutomationTrackItem);
464 case GDK_LEAVE_NOTIFY:
465 ret = leave_handler (item, event, AutomationTrackItem);
476 Editor::canvas_fade_in_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
478 /* we handle only button 3 press/release events */
480 switch (event->type) {
481 case GDK_BUTTON_PRESS:
482 clicked_regionview = rv;
483 clicked_control_point = 0;
484 clicked_trackview = &rv->get_time_axis_view();
485 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
486 if (event->button.button == 3) {
487 return button_press_handler (item, event, FadeInItem);
491 case GDK_BUTTON_RELEASE:
492 if (event->button.button == 3) {
493 return button_release_handler (item, event, FadeInItem);
502 /* proxy for the regionview */
504 return canvas_region_view_event (rv->get_canvas_group(), event, rv);
508 Editor::canvas_fade_in_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
512 switch (event->type) {
513 case GDK_BUTTON_PRESS:
514 case GDK_2BUTTON_PRESS:
515 case GDK_3BUTTON_PRESS:
516 clicked_regionview = rv;
517 clicked_control_point = 0;
518 clicked_trackview = &rv->get_time_axis_view();
519 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
520 ret = button_press_handler (item, event, FadeInHandleItem);
523 case GDK_BUTTON_RELEASE:
524 ret = button_release_handler (item, event, FadeInHandleItem);
527 case GDK_MOTION_NOTIFY:
528 ret = motion_handler (item, event, FadeInHandleItem);
531 case GDK_ENTER_NOTIFY:
532 ret = enter_handler (item, event, FadeInHandleItem);
535 case GDK_LEAVE_NOTIFY:
536 ret = leave_handler (item, event, FadeInHandleItem);
547 Editor::canvas_fade_out_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
549 /* we handle only button 3 press/release events */
551 switch (event->type) {
552 case GDK_BUTTON_PRESS:
553 clicked_regionview = rv;
554 clicked_control_point = 0;
555 clicked_trackview = &rv->get_time_axis_view();
556 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
557 if (event->button.button == 3) {
558 return button_press_handler (item, event, FadeOutItem);
562 case GDK_BUTTON_RELEASE:
563 if (event->button.button == 3) {
564 return button_release_handler (item, event, FadeOutItem);
573 /* proxy for the regionview */
575 return canvas_region_view_event (rv->get_canvas_group(), event, rv);
579 Editor::canvas_fade_out_handle_event (GnomeCanvasItem *item, GdkEvent *event, AudioRegionView *rv)
583 switch (event->type) {
584 case GDK_BUTTON_PRESS:
585 case GDK_2BUTTON_PRESS:
586 case GDK_3BUTTON_PRESS:
587 clicked_regionview = rv;
588 clicked_control_point = 0;
589 clicked_trackview = &rv->get_time_axis_view();
590 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
591 ret = button_press_handler (item, event, FadeOutHandleItem);
594 case GDK_BUTTON_RELEASE:
595 ret = button_release_handler (item, event, FadeOutHandleItem);
598 case GDK_MOTION_NOTIFY:
599 ret = motion_handler (item, event, FadeOutHandleItem);
602 case GDK_ENTER_NOTIFY:
603 ret = enter_handler (item, event, FadeOutHandleItem);
606 case GDK_LEAVE_NOTIFY:
607 ret = leave_handler (item, event, FadeOutHandleItem);
617 struct DescendingRegionLayerSorter {
618 bool operator()(Region* a, Region* b) {
619 return a->layer() > b->layer();
624 Editor::canvas_crossfade_view_event (GnomeCanvasItem* item, GdkEvent* event, CrossfadeView* xfv)
626 /* we handle only button 3 press/release events */
628 switch (event->type) {
629 case GDK_BUTTON_PRESS:
630 clicked_crossfadeview = xfv;
631 clicked_trackview = &clicked_crossfadeview->get_time_axis_view();
632 if (event->button.button == 3) {
633 return button_press_handler (item, event, CrossfadeViewItem);
637 case GDK_BUTTON_RELEASE:
638 if (event->button.button == 3) {
639 gint ret = button_release_handler (item, event, CrossfadeViewItem);
650 /* proxy for the upper most regionview */
652 /* XXX really need to check if we are in the name highlight,
653 and proxy to that when required.
656 TimeAxisView& tv (xfv->get_time_axis_view());
657 AudioTimeAxisView* atv;
659 if ((atv = dynamic_cast<AudioTimeAxisView*>(&tv)) != 0) {
661 if (atv->is_audio_track()) {
663 AudioPlaylist* pl = atv->get_diskstream()->playlist();
664 Playlist::RegionList* rl = pl->regions_at (event_frame (event));
667 DescendingRegionLayerSorter cmp;
670 AudioRegionView* arv = atv->view->find_view (*(dynamic_cast<AudioRegion*> (rl->front())));
676 return canvas_region_view_event (arv->get_canvas_group(), event, arv);
685 Editor::canvas_control_point_event (GnomeCanvasItem *item, GdkEvent *event)
690 if ((cp = static_cast<ControlPoint *> (gtk_object_get_data (GTK_OBJECT(item), "control_point"))) == 0) {
691 fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg;
695 if (dynamic_cast<AudioRegionGainLine*> (&cp->line) != 0) {
696 type = GainControlPointItem;
697 } else if (dynamic_cast<AutomationGainLine*> (&cp->line) != 0) {
698 type = GainAutomationControlPointItem;
699 } else if (dynamic_cast<AutomationPanLine*> (&cp->line) != 0) {
700 type = PanAutomationControlPointItem;
701 } else if (dynamic_cast<RedirectAutomationLine*> (&cp->line) != 0) {
702 type = RedirectAutomationControlPointItem;
707 return typed_event (item, event, type);
711 Editor::canvas_line_event (GnomeCanvasItem *item, GdkEvent *event)
716 if ((al = static_cast<AutomationLine *> (gtk_object_get_data (GTK_OBJECT(item), "line"))) == 0) {
717 fatal << _("programming error: line canvas item has no line object pointer!") << endmsg;
721 if (dynamic_cast<AudioRegionGainLine*> (al) != 0) {
723 } else if (dynamic_cast<AutomationGainLine*> (al) != 0) {
724 type = GainAutomationLineItem;
725 } else if (dynamic_cast<AutomationPanLine*> (al) != 0) {
726 type = PanAutomationLineItem;
727 } else if (dynamic_cast<RedirectAutomationLine*> (al) != 0) {
728 type = RedirectAutomationLineItem;
733 return typed_event (item, event, type);
738 Editor::canvas_selection_rect_event (GnomeCanvasItem *item, GdkEvent *event)
741 SelectionRect *rect = 0;
743 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
744 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
748 switch (event->type) {
749 case GDK_BUTTON_PRESS:
750 case GDK_2BUTTON_PRESS:
751 case GDK_3BUTTON_PRESS:
752 clicked_selection = rect->id;
753 ret = button_press_handler (item, event, SelectionItem);
755 case GDK_BUTTON_RELEASE:
756 ret = button_release_handler (item, event, SelectionItem);
758 case GDK_MOTION_NOTIFY:
759 ret = motion_handler (item, event, SelectionItem);
761 /* Don't need these at the moment. */
762 case GDK_ENTER_NOTIFY:
763 ret = enter_handler (item, event, SelectionItem);
766 case GDK_LEAVE_NOTIFY:
767 ret = leave_handler (item, event, SelectionItem);
778 Editor::canvas_selection_start_trim_event (GnomeCanvasItem *item, GdkEvent *event)
781 SelectionRect *rect = 0;
783 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
784 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
788 switch (event->type) {
789 case GDK_BUTTON_PRESS:
790 case GDK_2BUTTON_PRESS:
791 case GDK_3BUTTON_PRESS:
792 clicked_selection = rect->id;
793 ret = button_press_handler (item, event, StartSelectionTrimItem);
795 case GDK_BUTTON_RELEASE:
796 ret = button_release_handler (item, event, StartSelectionTrimItem);
798 case GDK_MOTION_NOTIFY:
799 ret = motion_handler (item, event, StartSelectionTrimItem);
801 case GDK_ENTER_NOTIFY:
802 ret = enter_handler (item, event, StartSelectionTrimItem);
805 case GDK_LEAVE_NOTIFY:
806 ret = leave_handler (item, event, StartSelectionTrimItem);
817 Editor::canvas_selection_end_trim_event (GnomeCanvasItem *item, GdkEvent *event)
820 SelectionRect *rect = 0;
822 if ((rect = reinterpret_cast<SelectionRect*> (gtk_object_get_data (GTK_OBJECT(item), "rect"))) == 0) {
823 fatal << _("programming error: no \"rect\" pointer associated with selection item") << endmsg;
827 switch (event->type) {
828 case GDK_BUTTON_PRESS:
829 case GDK_2BUTTON_PRESS:
830 case GDK_3BUTTON_PRESS:
831 clicked_selection = rect->id;
832 ret = button_press_handler (item, event, EndSelectionTrimItem);
834 case GDK_BUTTON_RELEASE:
835 ret = button_release_handler (item, event, EndSelectionTrimItem);
837 case GDK_MOTION_NOTIFY:
838 ret = motion_handler (item, event, EndSelectionTrimItem);
840 case GDK_ENTER_NOTIFY:
841 ret = enter_handler (item, event, EndSelectionTrimItem);
844 case GDK_LEAVE_NOTIFY:
845 ret = leave_handler (item, event, EndSelectionTrimItem);
857 Editor::canvas_region_view_name_highlight_event (GnomeCanvasItem *item, GdkEvent *event)
861 switch (event->type) {
862 case GDK_BUTTON_PRESS:
863 case GDK_2BUTTON_PRESS:
864 case GDK_3BUTTON_PRESS:
865 clicked_regionview = reinterpret_cast<AudioRegionView *> (gtk_object_get_data(GTK_OBJECT(item), "regionview"));
866 clicked_control_point = 0;
867 clicked_trackview = &clicked_regionview->get_time_axis_view();
868 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
869 ret = button_press_handler (item, event, AudioRegionViewNameHighlight);
871 case GDK_BUTTON_RELEASE:
872 ret = button_release_handler (item, event, AudioRegionViewNameHighlight);
874 case GDK_MOTION_NOTIFY:
875 ret = motion_handler (item, event, AudioRegionViewNameHighlight);
877 case GDK_ENTER_NOTIFY:
878 ret = enter_handler (item, event, AudioRegionViewNameHighlight);
881 case GDK_LEAVE_NOTIFY:
882 ret = leave_handler (item, event, AudioRegionViewNameHighlight);
893 Editor::canvas_region_view_name_event (GnomeCanvasItem *item, GdkEvent *event)
897 switch (event->type) {
898 case GDK_BUTTON_PRESS:
899 case GDK_2BUTTON_PRESS:
900 case GDK_3BUTTON_PRESS:
901 clicked_regionview = reinterpret_cast<AudioRegionView *> (gtk_object_get_data(GTK_OBJECT(item), "regionview"));
902 clicked_control_point = 0;
903 clicked_trackview = &clicked_regionview->get_time_axis_view();
904 clicked_audio_trackview = dynamic_cast<AudioTimeAxisView*>(clicked_trackview);
905 ret = button_press_handler (item, event, AudioRegionViewName);
907 case GDK_BUTTON_RELEASE:
908 ret = button_release_handler (item, event, AudioRegionViewName);
910 case GDK_MOTION_NOTIFY:
911 ret = motion_handler (item, event, AudioRegionViewName);
913 case GDK_ENTER_NOTIFY:
914 ret = enter_handler (item, event, AudioRegionViewName);
917 case GDK_LEAVE_NOTIFY:
918 ret = leave_handler (item, event, AudioRegionViewName);
929 Editor::canvas_marker_event (GnomeCanvasItem *item, GdkEvent *event)
931 return typed_event (item, event, MarkerItem);
935 Editor::canvas_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
937 return typed_event (item, event, MarkerBarItem);
941 Editor::canvas_range_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
943 return typed_event (item, event, RangeMarkerBarItem);
947 Editor::canvas_transport_marker_bar_event (GnomeCanvasItem *item, GdkEvent *event)
949 return typed_event (item, event, TransportMarkerBarItem);
953 Editor::canvas_tempo_marker_event (GnomeCanvasItem *item, GdkEvent *event)
955 return typed_event (item, event, TempoMarkerItem);
959 Editor::canvas_meter_marker_event (GnomeCanvasItem *item, GdkEvent *event)
961 return typed_event (item, event, MeterMarkerItem);
965 Editor::canvas_tempo_bar_event (GnomeCanvasItem *item, GdkEvent *event)
967 return typed_event (item, event, TempoBarItem);
971 Editor::canvas_meter_bar_event (GnomeCanvasItem *item, GdkEvent *event)
973 return typed_event (item, event, MeterBarItem);
977 Editor::canvas_playhead_cursor_event (GnomeCanvasItem *item, GdkEvent *event)
979 return typed_event (item, event, PlayheadCursorItem);
983 Editor::canvas_edit_cursor_event (GnomeCanvasItem *item, GdkEvent *event)
985 return typed_event (item, event, EditCursorItem);
989 Editor::canvas_zoom_rect_event (GnomeCanvasItem *item, GdkEvent *event)
991 return typed_event (item, event, NoItem);
995 Editor::canvas_copy_region_event (GnomeCanvasItem *item, GdkEvent *event)
997 return typed_event (item, event, RegionItem);