X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Feditor_canvas_events.cc;h=36d9ee98ea00211b52768416a95cb039dfb186f4;hb=ac33bb425641bd4377f68f8a6a3eabc6c58286a9;hp=4acd04a318e86f4422d45f5483114b615d6d5855;hpb=e1b0f1bd0b03c071d2b5987e4ab75ef059e32111;p=ardour.git diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 4acd04a318..36d9ee98ea 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -72,17 +72,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) retry: switch (direction) { case GDK_SCROLL_UP: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) { //for mouse-wheel zoom, force zoom-focus to mouse Editing::ZoomFocus temp_focus = zoom_focus; zoom_focus = Editing::ZoomFocusMouse; temporal_zoom_step (false); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) { direction = GDK_SCROLL_LEFT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (event_coords.y); @@ -101,17 +101,17 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) break; case GDK_SCROLL_DOWN: - if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { + if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) { //for mouse-wheel zoom, force zoom-focus to mouse Editing::ZoomFocus temp_focus = zoom_focus; zoom_focus = Editing::ZoomFocusMouse; temporal_zoom_step (true); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) { direction = GDK_SCROLL_RIGHT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (event_coords.y); @@ -267,13 +267,17 @@ Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, Reg break; case GDK_ENTER_NOTIFY: - set_entered_track (&rv->get_time_axis_view ()); - set_entered_regionview (rv); + if (event->crossing.detail != GDK_NOTIFY_INFERIOR) { + set_entered_regionview (rv); + ret = true; + } break; case GDK_LEAVE_NOTIFY: - set_entered_track (0); - set_entered_regionview (0); + if (event->crossing.detail != GDK_NOTIFY_INFERIOR) { + set_entered_regionview (0); + ret = true; + } break; default: @@ -309,6 +313,7 @@ Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, Rou case GDK_ENTER_NOTIFY: set_entered_track (tv); + ret = true; break; case GDK_LEAVE_NOTIFY: @@ -462,13 +467,17 @@ Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRe } - /* proxy for the regionview */ + /* proxy for the regionview, except enter/leave events */ - return canvas_region_view_event (event, rv->get_canvas_group(), rv); + if (event->type == GDK_ENTER_NOTIFY || event->type == GDK_LEAVE_NOTIFY) { + return true; + } else { + return canvas_region_view_event (event, rv->get_canvas_group(), rv); + } } bool -Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) +Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv, bool trim) { bool ret = false; @@ -484,11 +493,11 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, clicked_control_point = 0; clicked_axisview = &rv->get_time_axis_view(); clicked_routeview = dynamic_cast(clicked_axisview); - ret = button_press_handler (item, event, FadeInHandleItem); + ret = button_press_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem); break; case GDK_BUTTON_RELEASE: - ret = button_release_handler (item, event, FadeInHandleItem); + ret = button_release_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem); maybe_locate_with_edit_preroll ( rv->region()->position() ); break; @@ -497,13 +506,11 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, break; case GDK_ENTER_NOTIFY: - set_entered_regionview (rv); - ret = enter_handler (item, event, FadeInHandleItem); + ret = enter_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem); break; case GDK_LEAVE_NOTIFY: - set_entered_regionview (0); - ret = leave_handler (item, event, FadeInHandleItem); + ret = leave_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem); break; default: @@ -544,13 +551,17 @@ Editor::canvas_fade_out_event (GdkEvent *event, ArdourCanvas::Item* item, AudioR } - /* proxy for the regionview */ + /* proxy for the regionview, except enter/leave events */ - return canvas_region_view_event (event, rv->get_canvas_group(), rv); + if (event->type == GDK_ENTER_NOTIFY || event->type == GDK_LEAVE_NOTIFY) { + return true; + } else { + return canvas_region_view_event (event, rv->get_canvas_group(), rv); + } } bool -Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv) +Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRegionView *rv, bool trim) { bool ret = false; @@ -566,11 +577,11 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, clicked_control_point = 0; clicked_axisview = &rv->get_time_axis_view(); clicked_routeview = dynamic_cast(clicked_axisview); - ret = button_press_handler (item, event, FadeOutHandleItem); + ret = button_press_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem); break; case GDK_BUTTON_RELEASE: - ret = button_release_handler (item, event, FadeOutHandleItem); + ret = button_release_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem); maybe_locate_with_edit_preroll ( rv->region()->last_frame() - rv->get_fade_out_shape_width() ); break; @@ -579,13 +590,11 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, break; case GDK_ENTER_NOTIFY: - set_entered_regionview (rv); - ret = enter_handler (item, event, FadeOutHandleItem); + ret = enter_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem); break; case GDK_LEAVE_NOTIFY: - set_entered_regionview (0); - ret = leave_handler (item, event, FadeOutHandleItem); + ret = leave_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem); break; default: @@ -783,12 +792,10 @@ Editor::canvas_frame_handle_event (GdkEvent* event, ArdourCanvas::Item* item, Re ret = motion_handler (item, event); break; case GDK_ENTER_NOTIFY: - set_entered_regionview (rv); ret = enter_handler (item, event, type); break; case GDK_LEAVE_NOTIFY: - set_entered_regionview (0); ret = leave_handler (item, event, type); break; @@ -827,12 +834,10 @@ Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas:: ret = true; // force this to avoid progagating the event into the regionview break; case GDK_ENTER_NOTIFY: - set_entered_regionview (rv); ret = enter_handler (item, event, RegionViewNameHighlight); break; case GDK_LEAVE_NOTIFY: - set_entered_regionview (0); ret = leave_handler (item, event, RegionViewNameHighlight); break; @@ -869,12 +874,10 @@ Editor::canvas_region_view_name_event (GdkEvent *event, ArdourCanvas::Item* item ret = motion_handler (item, event); break; case GDK_ENTER_NOTIFY: - set_entered_regionview (rv); ret = enter_handler (item, event, RegionViewName); break; case GDK_LEAVE_NOTIFY: - set_entered_regionview (0); ret = leave_handler (item, event, RegionViewName); break; @@ -1006,6 +1009,13 @@ Editor::canvas_note_event (GdkEvent *event, ArdourCanvas::Item* item) return typed_event (item, event, NoteItem); } +bool +Editor::canvas_bottom_rect_event (GdkEvent* event) +{ + cerr << "CBR event, type " << event << endl; + return true; +} + bool Editor::track_canvas_drag_motion (Glib::RefPtr const& context, int x, int y, guint time) { @@ -1028,7 +1038,7 @@ Editor::track_canvas_drag_motion (Glib::RefPtr const& context, /* assume we're dragging with button 1 */ event.motion.state = Gdk::BUTTON1_MASK; - (void) window_event_frame (&event, &px, &py); + (void) window_event_sample (&event, &px, &py); std::pair const tv = trackview_by_y_position (py); bool can_drop = false; @@ -1111,7 +1121,7 @@ Editor::drop_regions (const Glib::RefPtr& /*context*/, /* assume we're dragging with button 1 */ event.motion.state = Gdk::BUTTON1_MASK; - framepos_t const pos = window_event_frame (&event, &px, &py); + framepos_t const pos = window_event_sample (&event, &px, &py); std::pair const tv = trackview_by_y_position (py); @@ -1188,3 +1198,4 @@ Editor::key_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType return handled; } +