diff options
author | Robin Gareus <robin@gareus.org> | 2019-11-22 22:12:48 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-11-22 22:12:48 +0100 |
commit | c456006f82086c0a976da99dc0f6db152d13322b (patch) | |
tree | a7b7806b7674119635b14b5b9b0ed3c034814a99 | |
parent | ceee42f7af55eeb8e65caeee8495a38286b792f8 (diff) |
Enable some key release event forwarding
This is needed for the virtual MIDI keyboard to trigger note-off events
-rw-r--r-- | gtk2_ardour/ardour_window.cc | 14 | ||||
-rw-r--r-- | gtk2_ardour/ardour_window.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/plugin_ui.cc | 4 |
4 files changed, 18 insertions, 4 deletions
diff --git a/gtk2_ardour/ardour_window.cc b/gtk2_ardour/ardour_window.cc index 5e0443f7e6..27e0247c34 100644 --- a/gtk2_ardour/ardour_window.cc +++ b/gtk2_ardour/ardour_window.cc @@ -72,6 +72,20 @@ ArdourWindow::on_key_press_event (GdkEventKey* ev) } bool +ArdourWindow::on_key_release_event (GdkEventKey* ev) +{ + bool handled = Gtk::Window::on_key_press_event (ev); + + if (!handled) { + if (!get_modal()) { + handled = relay_key_press (ev, this); + } + } + + return handled; +} + +bool ArdourWindow::on_focus_in_event (GdkEventFocus *ev) { Keyboard::the_keyboard().focus_in_window (ev, this); diff --git a/gtk2_ardour/ardour_window.h b/gtk2_ardour/ardour_window.h index f306618e24..2102eaae9e 100644 --- a/gtk2_ardour/ardour_window.h +++ b/gtk2_ardour/ardour_window.h @@ -47,6 +47,7 @@ protected: bool on_focus_out_event (GdkEventFocus*); bool on_delete_event (GdkEventAny *); bool on_key_press_event (GdkEventKey*); + bool on_key_release_event (GdkEventKey*); void on_unmap (); private: diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index c40a90280d..ec1bf70b88 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -275,8 +275,7 @@ Meterbridge::on_key_release_event (GdkEventKey* ev) if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { return true; } - /* don't forward releases */ - return true; + return relay_key_press (ev, this); } bool diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 60ec17ff66..b4a22c6f90 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -439,13 +439,13 @@ PluginUIWindow::on_key_release_event (GdkEventKey *event) if (_pluginui) { if (_pluginui->non_gtk_gui()) { _pluginui->forward_key_event (event); + return true; } } } else { gtk_window_propagate_key_event (GTK_WINDOW(gobj()), event); } - /* don't forward releases */ - return true; + return relay_key_press (event, this); } void |