when handling a keyboard event, if the current focus widget has ardour bindings attached, use them rather the ones for the main window content tab
This commit is contained in:
parent
7460bbefb6
commit
ad4ae69a1d
@ -5283,6 +5283,20 @@ ARDOUR_UI::key_event_handler (GdkEventKey* ev, Gtk::Window* event_window)
|
|||||||
return key_press_focus_accelerator_handler (*window, ev, bindings);
|
return key_press_focus_accelerator_handler (*window, ev, bindings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Gtkmm2ext::Bindings*
|
||||||
|
get_bindings_from_widget_heirarchy (GtkWidget* w)
|
||||||
|
{
|
||||||
|
void* p;
|
||||||
|
|
||||||
|
while (w) {
|
||||||
|
if ((p = g_object_get_data (G_OBJECT(w), "ardour-bindings")) != 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return reinterpret_cast<Gtkmm2ext::Bindings*> (p);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings* bindings)
|
ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings* bindings)
|
||||||
{
|
{
|
||||||
@ -5303,6 +5317,14 @@ ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
special_handling_of_unmodified_accelerators = true;
|
special_handling_of_unmodified_accelerators = true;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
Gtkmm2ext::Bindings* focus_bindings = get_bindings_from_widget_heirarchy (focus);
|
||||||
|
if (focus_bindings) {
|
||||||
|
bindings = focus_bindings;
|
||||||
|
DEBUG_TRACE (DEBUG::Accelerators, string_compose ("Switch bindings based on focus widget, now using %1\n", bindings->name()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5361,7 +5383,7 @@ ARDOUR_UI::key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey
|
|||||||
|
|
||||||
if (bindings) {
|
if (bindings) {
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Accelerators, string_compose ("\tusing Ardour bindings %1 for this event\n", bindings));
|
DEBUG_TRACE (DEBUG::Accelerators, string_compose ("\tusing Ardour bindings %1 @ %2 for this event\n", bindings->name(), bindings));
|
||||||
|
|
||||||
if (bindings->activate (k, Bindings::Press)) {
|
if (bindings->activate (k, Bindings::Press)) {
|
||||||
DEBUG_TRACE (DEBUG::Accelerators, "\t\thandled\n");
|
DEBUG_TRACE (DEBUG::Accelerators, "\t\thandled\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user