bool
ArdourWindow::on_key_press_event (GdkEventKey* ev)
{
- if (get_modal()) {
- return Gtk::Window::on_key_press_event (ev);
- }
+ bool handled = Gtk::Window::on_key_press_event (ev);
- if (!relay_key_press (ev, this)) {
- return Gtk::Window::on_key_press_event (ev);
+ if (!handled) {
+ if (!get_modal()) {
+ handled = relay_key_press (ev, this);
+ }
}
- return true;
+
+ return handled;
}
bool
ArdourWindow::on_focus_in_event (GdkEventFocus *ev)
{
- if (Keyboard::some_magic_widget_has_focus()) {
- Keyboard::magic_widget_drop_focus ();
- }
-
Keyboard::the_keyboard().focus_in_window (ev, this);
- Keyboard::magic_widget_grab_focus ();
return Window::on_focus_in_event (ev);
}
ArdourWindow::on_focus_out_event (GdkEventFocus *ev)
{
if (!get_modal()) {
- Keyboard::magic_widget_drop_focus ();
Keyboard::the_keyboard().focus_out_window (ev, this);
}
return Window::on_focus_out_event (ev);
void
ArdourWindow::on_unmap ()
{
- if (Keyboard::some_magic_widget_has_focus()) {
- Gtk::Window* win = static_cast<Gtk::Window*>(get_focus()->get_toplevel());
- if (win == Keyboard::get_current_window()) {
- Keyboard::magic_widget_drop_focus ();
- }
- }
-
Keyboard::the_keyboard().leave_window (0, this);
Window::on_unmap ();
}