diff --git a/gtk2_ardour/editing_context.cc b/gtk2_ardour/editing_context.cc index 998ceb0dbe..e781193d93 100644 --- a/gtk2_ardour/editing_context.cc +++ b/gtk2_ardour/editing_context.cc @@ -2403,7 +2403,7 @@ EditingContext::register_grid_actions () ActionManager::register_action (editor_actions, X_("next-grid-choice"), _("Next Quantize Grid Choice"), sigc::mem_fun (*this, &EditingContext::next_grid_choice)); ActionManager::register_action (editor_actions, X_("prev-grid-choice"), _("Previous Quantize Grid Choice"), sigc::mem_fun (*this, &EditingContext::prev_grid_choice)); - Glib::RefPtr snap_actions = ActionManager::create_action_group (bindings, editor_name() + X_("Snap")); + snap_actions = ActionManager::create_action_group (bindings, editor_name() + X_("Snap")); RadioAction::Group grid_choice_group; ActionManager::register_radio_action (snap_actions, grid_choice_group, X_("grid-type-thirtyseconds"), grid_type_strings[(int)GridTypeBeatDiv32].c_str(), (sigc::bind (sigc::mem_fun(*this, &EditingContext::grid_type_chosen), Editing::GridTypeBeatDiv32))); diff --git a/gtk2_ardour/editing_context.h b/gtk2_ardour/editing_context.h index 8c0f6627aa..a3508db970 100644 --- a/gtk2_ardour/editing_context.h +++ b/gtk2_ardour/editing_context.h @@ -680,6 +680,7 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider ArdourWidgets::ArdourButton mouse_content_button; Glib::RefPtr editor_actions; + Glib::RefPtr snap_actions; virtual void register_actions() = 0; void register_grid_actions (); diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index fd09703aee..f6d820350a 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -97,6 +97,8 @@ Pianoroll::Pianoroll (std::string const & name) Pianoroll::~Pianoroll () { delete bindings; + ActionManager::drop_action_group (editor_actions); + ActionManager::drop_action_group (snap_actions); } bool diff --git a/gtk2_ardour/pianoroll_window.cc b/gtk2_ardour/pianoroll_window.cc index 727c6fa854..31af94b58e 100644 --- a/gtk2_ardour/pianoroll_window.cc +++ b/gtk2_ardour/pianoroll_window.cc @@ -18,6 +18,8 @@ #include "pbd/compose.h" +#include "gtkmm2ext/doi.h" + #include "ardour_ui.h" #include "pianoroll.h" #include "pianoroll_window.h" @@ -52,3 +54,10 @@ PianorollWindow::on_key_press_event (GdkEventKey* ev) { return ARDOUR_UI::instance()->key_event_handler (ev, this); } + +bool +PianorollWindow::on_delete_event (GdkEventAny*) +{ + delete_when_idle (this); + return true; +} diff --git a/gtk2_ardour/pianoroll_window.h b/gtk2_ardour/pianoroll_window.h index 6f66ee8d2b..ac76fdec4b 100644 --- a/gtk2_ardour/pianoroll_window.h +++ b/gtk2_ardour/pianoroll_window.h @@ -34,7 +34,8 @@ class PianorollWindow : public ArdourWindow ~PianorollWindow (); void set (std::shared_ptr, std::shared_ptr); - bool on_key_press_event (GdkEventKey* ev); + bool on_key_press_event (GdkEventKey*); + bool on_delete_event (GdkEventAny*); private: Pianoroll* pianoroll;