diff --git a/gtk2_ardour/editing_context.cc b/gtk2_ardour/editing_context.cc index 9f10f9cb06..ffab1c69d6 100644 --- a/gtk2_ardour/editing_context.cc +++ b/gtk2_ardour/editing_context.cc @@ -229,6 +229,7 @@ EditingContext::EditingContext (std::string const & name) full_zoom_button.set_name ("zoom button"); full_zoom_button.set_icon (ArdourIcon::ZoomFull); + selection->PointsChanged.connect (sigc::mem_fun(*this, &EditingContext::point_selection_changed)); for (int i = 0; i < 16; i++) { char buf[4]; diff --git a/gtk2_ardour/editing_context.h b/gtk2_ardour/editing_context.h index f794e1e8b8..0718067e8b 100644 --- a/gtk2_ardour/editing_context.h +++ b/gtk2_ardour/editing_context.h @@ -341,6 +341,8 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider void reset_point_selection (); + virtual void point_selection_changed () = 0; + /** Set the mouse mode (gain, object, range, timefx etc.) * @param m Mouse mode (defined in editing_syms.inc.h) * @param force Perform the effects of the change even if no change is required diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 6fb5f7805b..32dcbf3869 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -467,7 +467,6 @@ Editor::Editor () editor_regions_selection_changed_connection = selection->RegionsChanged.connect (sigc::mem_fun(*this, &Editor::region_selection_changed)); - selection->PointsChanged.connect (sigc::mem_fun(*this, &Editor::point_selection_changed)); selection->MarkersChanged.connect (sigc::mem_fun(*this, &Editor::marker_selection_changed)); edit_controls_vbox.set_spacing (0); diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index 8d1bd21069..255035dfba 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -2095,3 +2095,11 @@ Pianoroll::full_zoom_clicked() samplecnt_t s = dur.second.samples() - dur.first.samples(); reposition_and_zoom (0, (s / (double) _visible_canvas_width)); } + +void +Pianoroll::point_selection_changed () +{ + if (view) { + view->point_selection_changed (); + } +} diff --git a/gtk2_ardour/pianoroll.h b/gtk2_ardour/pianoroll.h index 9782829b78..028b295f90 100644 --- a/gtk2_ardour/pianoroll.h +++ b/gtk2_ardour/pianoroll.h @@ -269,4 +269,6 @@ class Pianoroll : public CueEditor void build_zoom_focus_menu (); std::pair max_zoom_extent() const; + + void point_selection_changed (); }; diff --git a/gtk2_ardour/pianoroll_midi_view.cc b/gtk2_ardour/pianoroll_midi_view.cc index 4d471e8de3..7fea3140e1 100644 --- a/gtk2_ardour/pianoroll_midi_view.cc +++ b/gtk2_ardour/pianoroll_midi_view.cc @@ -623,3 +623,11 @@ PianorollMidiView::automation_leave () active_automation->line->track_entered (); } } + +void +PianorollMidiView::point_selection_changed () +{ + if (active_automation) { + active_automation->line->set_selected_points (_editing_context.get_selection().points); + } +} diff --git a/gtk2_ardour/pianoroll_midi_view.h b/gtk2_ardour/pianoroll_midi_view.h index bd4ffaec6a..d2b18a1955 100644 --- a/gtk2_ardour/pianoroll_midi_view.h +++ b/gtk2_ardour/pianoroll_midi_view.h @@ -77,6 +77,8 @@ class PianorollMidiView : public MidiView void automation_entry(); void automation_leave (); + void point_selection_changed (); + sigc::signal AutomationStateChange; protected: