diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 3e7aad2a1b..c0656ba90a 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -106,6 +106,9 @@ Editor::initialize_canvas () track_canvas = new ArdourCanvas::CanvasAA (); } + track_canvas->set_can_default (true); + set_default (*track_canvas); + ArdourCanvas::init (); ardour_canvas_type_init (); diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 54519546d0..dbe873634c 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -427,7 +427,20 @@ GainMeterBase::gain_activated () } if (gain_display.has_focus()) { - PublicEditor::instance().reset_focus(); + Gtk::Widget* w = gain_display.get_toplevel(); + if (w) { + Gtk::Window* win = dynamic_cast (w); + + /* sigh. gtkmm doesn't wrap get_default_widget() */ + + if (win) { + GtkWidget* f = gtk_window_get_default_widget (win->gobj()); + if (f) { + gtk_widget_grab_focus (f); + return; + } + } + } } } diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index fc39115c33..10345428b1 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -97,6 +97,9 @@ Mixer_UI::Mixer_UI () Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::sync_treeview_from_order_keys, this, _1), gui_context()); + scroller.set_can_default (true); + set_default (scroller); + scroller_base.set_flags (Gtk::CAN_FOCUS); scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); scroller_base.set_name ("MixerWindow"); @@ -1935,3 +1938,4 @@ Mixer_UI::toggle_midi_input_active (bool flip_others) _session->set_exclusive_input_active (rl, onoff, flip_others); } +