diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 0e2a641e0c..990d59b00e 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -9581,10 +9581,9 @@ Editor::temporal_zoom_extents () void Editor::edit_region_in_pianoroll_window () { - selection->foreach_midi_regionview (&MidiRegionView::edit_in_pianoroll_window); + selection->foreach_midi_regionview (&MidiRegionView::show_region_editor); } - void Editor::find_and_display_track () { diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 39959d1b11..8f3d7049c5 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -701,23 +701,6 @@ MidiRegionView::add_control_points_to_selection (timepos_t const & start, timepo } } -void -MidiRegionView::edit_in_pianoroll_window () -{ - std::shared_ptr track = std::dynamic_pointer_cast (trackview.stripable()); - assert (track); - - PianorollWindow* pr = new PianorollWindow (string_compose (_("Pianoroll: %1"), _region->name()), track->session()); - - pr->set (track, midi_region()); - pr->set_show_source (false); - pr->show_all (); - pr->present (); - - pr->signal_delete_event().connect (sigc::mem_fun (*this, &MidiRegionView::pianoroll_window_deleted), false); - _editor = pr; -} - bool MidiRegionView::pianoroll_window_deleted (GdkEventAny*) { @@ -728,7 +711,21 @@ MidiRegionView::pianoroll_window_deleted (GdkEventAny*) void MidiRegionView::show_region_editor () { - edit_in_pianoroll_window (); + if (!_editor) { + std::shared_ptr track = std::dynamic_pointer_cast (trackview.stripable()); + assert (track); + + PianorollWindow* pr = new PianorollWindow (string_compose (_("Pianoroll: %1"), _region->name()), track->session()); + + pr->set (track, midi_region()); + pr->set_show_source (false); + + pr->signal_delete_event().connect (sigc::mem_fun (*this, &MidiRegionView::pianoroll_window_deleted), false); + _editor = pr; + } + + _editor->show_all (); + _editor->present (); } void diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index eff7b57c64..efa968298c 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -134,7 +134,6 @@ public: void set_visibility_note_range (MidiViewBackground::VisibleNoteRange, bool); MergeableLine* make_merger (); - void edit_in_pianoroll_window (); void show_region_editor (); void hide_region_editor ();