fix reversion of keyboard focus from gain display editing widget in both mixer and editor windows

git-svn-id: svn://localhost/ardour2/branches/3.0@13628 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-12-10 02:03:45 +00:00
parent 24917e4c9e
commit 00e1b1410c
3 changed files with 21 additions and 1 deletions

View File

@ -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 ();

View File

@ -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<Gtk::Window*> (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;
}
}
}
}
}

View File

@ -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);
}