ensure that all callers of ARDOUR_UI_UTILS::relay_key_press() provide a window

This commit is contained in:
Paul Davis 2015-09-04 11:49:56 -04:00
parent a47b3c4dc5
commit ec65e351ac
9 changed files with 18 additions and 24 deletions

View File

@ -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)); 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; window = event_window;

View File

@ -256,7 +256,7 @@ Meterbridge::on_key_press_event (GdkEventKey* ev)
if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) {
return true; return true;
} }
return relay_key_press (ev); return relay_key_press (ev, this);
} }
bool bool

View File

@ -467,7 +467,7 @@ MonitorSection::MonitorSection (Session* s)
_tearoff->tearoff_window().set_type_hint (Gdk::WINDOW_TYPE_HINT_NORMAL); _tearoff->tearoff_window().set_type_hint (Gdk::WINDOW_TYPE_HINT_NORMAL);
} }
_tearoff->tearoff_window().set_title (X_("Monitor")); _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_output_display ();
update_processor_box (); update_processor_box ();

View File

@ -1013,7 +1013,7 @@ Panner2dWindow::set_width ()
bool bool
Panner2dWindow::on_key_press_event (GdkEventKey* event) Panner2dWindow::on_key_press_event (GdkEventKey* event)
{ {
return relay_key_press (event, 0); return relay_key_press (event, this);
} }
bool bool

View File

@ -369,12 +369,12 @@ PluginUIWindow::on_key_press_event (GdkEventKey* event)
if (_pluginui) { if (_pluginui) {
_pluginui->grab_focus(); _pluginui->grab_focus();
if (_pluginui->non_gtk_gui()) { 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 to be handled in, not this one, because there are
no widgets in this window that we want to have no widgets in this window that we want to have
key focus. key focus.
*/ */
return relay_key_press (event, 0); return relay_key_press (event, &ARDOUR_UI::instance()->main_window());
} else { } else {
return relay_key_press (event, this); return relay_key_press (event, this);
} }

View File

@ -222,7 +222,7 @@ RegionLayeringOrderEditor::on_key_press_event (GdkEventKey* ev)
} }
if (!handled) { if (!handled) {
handled = relay_key_press (ev, 0); handled = relay_key_press (ev, this);
} }
if (!handled) { if (!handled) {

View File

@ -496,26 +496,18 @@ StepEntry::on_key_press_event (GdkEventKey* ev)
forward to main window forward to main window
*/ */
if (!gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) {
KeyboardKey k (ev->state, ev->keyval); return true;
if (bindings->activate (k, Bindings::Press)) {
return true;
}
} }
return relay_key_press (ev); return relay_key_press (ev, this);
} }
bool bool
StepEntry::on_key_release_event (GdkEventKey* ev) StepEntry::on_key_release_event (GdkEventKey* ev)
{ {
if (!gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) { if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) {
KeyboardKey k (ev->state, ev->keyval); return true;
if (bindings->activate (k, Bindings::Release)) {
return true;
}
} }
/* don't forward releases */ /* don't forward releases */

View File

@ -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 (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keymapkey, &n_keys)) return false;
if (n_keys !=1) { g_free(keymapkey); return false;} if (n_keys !=1) { g_free(keymapkey); return false;}
Gtk::Window& main_window (ARDOUR_UI::instance()->main_window());
GdkEventKey ev; GdkEventKey ev;
ev.type = GDK_KEY_PRESS; 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.send_event = FALSE;
ev.time = 0; ev.time = 0;
ev.state = 0; ev.state = 0;
@ -324,9 +326,9 @@ ARDOUR_UI_UTILS::emulate_key_event (unsigned int keyval)
ev.group = keymapkey[0].group; ev.group = keymapkey[0].group;
g_free(keymapkey); g_free(keymapkey);
relay_key_press(&ev); relay_key_press (&ev, &main_window);
ev.type = GDK_KEY_RELEASE; ev.type = GDK_KEY_RELEASE;
return relay_key_press(&ev); return relay_key_press(&ev, &main_window);
} }
string string

View File

@ -67,7 +67,7 @@ void set_color_from_rgba (Gdk::Color&, uint32_t);
uint32_t gdk_color_to_rgba (Gdk::Color const&); uint32_t gdk_color_to_rgba (Gdk::Color const&);
uint32_t contrasting_text_color (uint32_t c); 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 key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev);
bool emulate_key_event (unsigned int); bool emulate_key_event (unsigned int);