From ec65e351acea329de1d09b8ce518a023001dfdab Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 4 Sep 2015 11:49:56 -0400 Subject: ensure that all callers of ARDOUR_UI_UTILS::relay_key_press() provide a window --- gtk2_ardour/ardour_ui.cc | 2 +- gtk2_ardour/meterbridge.cc | 2 +- gtk2_ardour/monitor_section.cc | 2 +- gtk2_ardour/panner2d.cc | 2 +- gtk2_ardour/plugin_ui.cc | 4 ++-- gtk2_ardour/region_layering_order_editor.cc | 2 +- gtk2_ardour/step_entry.cc | 18 +++++------------- gtk2_ardour/utils.cc | 8 +++++--- gtk2_ardour/utils.h | 2 +- 9 files changed, 18 insertions(+), 24 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 6782442708..76bef4e1eb 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -5185,7 +5185,7 @@ ARDOUR_UI::key_event_handler (GdkEventKey* ev, Gtk::Window* event_window) DEBUG_TRACE (DEBUG::Accelerators, string_compose ("main window key event, bindings = %1, global = %2\n", bindings, &global_bindings)); - } else if (event_window != 0) { + } else { window = event_window; diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index be7fc4c47d..aa2046a948 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -256,7 +256,7 @@ Meterbridge::on_key_press_event (GdkEventKey* ev) if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { return true; } - return relay_key_press (ev); + return relay_key_press (ev, this); } bool diff --git a/gtk2_ardour/monitor_section.cc b/gtk2_ardour/monitor_section.cc index 2a7593c58c..f17f9feae8 100644 --- a/gtk2_ardour/monitor_section.cc +++ b/gtk2_ardour/monitor_section.cc @@ -467,7 +467,7 @@ MonitorSection::MonitorSection (Session* s) _tearoff->tearoff_window().set_type_hint (Gdk::WINDOW_TYPE_HINT_NORMAL); } _tearoff->tearoff_window().set_title (X_("Monitor")); - _tearoff->tearoff_window().signal_key_press_event().connect (sigc::bind (sigc::ptr_fun (relay_key_press), (Gtk::Window*) 0), false); + _tearoff->tearoff_window().signal_key_press_event().connect (sigc::bind (sigc::ptr_fun (relay_key_press), (Gtk::Window*) &_tearoff->tearoff_window()), false); update_output_display (); update_processor_box (); diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index f576a4ea00..4212456f75 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -1013,7 +1013,7 @@ Panner2dWindow::set_width () bool Panner2dWindow::on_key_press_event (GdkEventKey* event) { - return relay_key_press (event, 0); + return relay_key_press (event, this); } bool diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 833055eff7..87c0202836 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -369,12 +369,12 @@ PluginUIWindow::on_key_press_event (GdkEventKey* event) if (_pluginui) { _pluginui->grab_focus(); if (_pluginui->non_gtk_gui()) { - /* pass editor window as the window for the event + /* pass main window as the window for the event to be handled in, not this one, because there are no widgets in this window that we want to have key focus. */ - return relay_key_press (event, 0); + return relay_key_press (event, &ARDOUR_UI::instance()->main_window()); } else { return relay_key_press (event, this); } diff --git a/gtk2_ardour/region_layering_order_editor.cc b/gtk2_ardour/region_layering_order_editor.cc index a8ab1d6904..8c05d2f081 100644 --- a/gtk2_ardour/region_layering_order_editor.cc +++ b/gtk2_ardour/region_layering_order_editor.cc @@ -222,7 +222,7 @@ RegionLayeringOrderEditor::on_key_press_event (GdkEventKey* ev) } if (!handled) { - handled = relay_key_press (ev, 0); + handled = relay_key_press (ev, this); } if (!handled) { diff --git a/gtk2_ardour/step_entry.cc b/gtk2_ardour/step_entry.cc index 61b5584adb..51ccd8b649 100644 --- a/gtk2_ardour/step_entry.cc +++ b/gtk2_ardour/step_entry.cc @@ -496,26 +496,18 @@ StepEntry::on_key_press_event (GdkEventKey* ev) forward to main window */ - if (!gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { - KeyboardKey k (ev->state, ev->keyval); - - if (bindings->activate (k, Bindings::Press)) { - return true; - } + if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { + return true; } - return relay_key_press (ev); + return relay_key_press (ev, this); } bool StepEntry::on_key_release_event (GdkEventKey* ev) { - if (!gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { - KeyboardKey k (ev->state, ev->keyval); - - if (bindings->activate (k, Bindings::Release)) { - return true; - } + if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { + return true; } /* don't forward releases */ diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 557804948c..589ec54794 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -311,9 +311,11 @@ ARDOUR_UI_UTILS::emulate_key_event (unsigned int keyval) if (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keymapkey, &n_keys)) return false; if (n_keys !=1) { g_free(keymapkey); return false;} + Gtk::Window& main_window (ARDOUR_UI::instance()->main_window()); + GdkEventKey ev; ev.type = GDK_KEY_PRESS; - ev.window = ARDOUR_UI::instance()->main_window().get_window()->gobj(); + ev.window = main_window.get_window()->gobj(); ev.send_event = FALSE; ev.time = 0; ev.state = 0; @@ -324,9 +326,9 @@ ARDOUR_UI_UTILS::emulate_key_event (unsigned int keyval) ev.group = keymapkey[0].group; g_free(keymapkey); - relay_key_press(&ev); + relay_key_press (&ev, &main_window); ev.type = GDK_KEY_RELEASE; - return relay_key_press(&ev); + return relay_key_press(&ev, &main_window); } string diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 1c30172685..949cb8c6d5 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -67,7 +67,7 @@ void set_color_from_rgba (Gdk::Color&, uint32_t); uint32_t gdk_color_to_rgba (Gdk::Color const&); uint32_t contrasting_text_color (uint32_t c); -bool relay_key_press (GdkEventKey* ev, Gtk::Window* win = 0); +bool relay_key_press (GdkEventKey* ev, Gtk::Window* win); bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev); bool emulate_key_event (unsigned int); -- cgit v1.2.3