diff --git a/src/core/display.c b/src/core/display.c index 334c07c08..a8f8913d5 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -1980,11 +1980,7 @@ handle_window_focus_event (MetaDisplay *display, { display->server_focus_window = event->event; display->server_focus_serial = serial; - - if (window && window->override_redirect) - focus_window = NULL; - else - focus_window = window; + focus_window = window; } else if (event->evtype == XI_FocusOut) { diff --git a/src/core/window.c b/src/core/window.c index 9ed387e3a..5e450c6bb 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -7193,6 +7193,8 @@ meta_window_set_focused_internal (MetaWindow *window, if (focused) { window->has_focus = TRUE; + if (window->override_redirect) + return; /* Move to the front of the focusing workspace's MRU list. * We should only be "removing" it from the MRU list if it's @@ -7258,8 +7260,11 @@ meta_window_set_focused_internal (MetaWindow *window, } else { - meta_window_propagate_focus_appearance (window, FALSE); window->has_focus = FALSE; + if (window->override_redirect) + return; + + meta_window_propagate_focus_appearance (window, FALSE); if (!window->attached_focus_window) meta_window_appears_focused_changed (window);