summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-11-22 22:12:48 +0100
committerRobin Gareus <robin@gareus.org>2019-11-22 22:12:48 +0100
commitc456006f82086c0a976da99dc0f6db152d13322b (patch)
treea7b7806b7674119635b14b5b9b0ed3c034814a99
parentceee42f7af55eeb8e65caeee8495a38286b792f8 (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.cc14
-rw-r--r--gtk2_ardour/ardour_window.h1
-rw-r--r--gtk2_ardour/meterbridge.cc3
-rw-r--r--gtk2_ardour/plugin_ui.cc4
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