diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index 477d39628..15d37c5c9 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -886,15 +886,21 @@ meta_window_x11_maybe_focus_delayed (MetaWindow *window, } static void -maybe_focus_default_window (MetaWorkspace *workspace, - MetaWindow *not_this_one, - guint32 timestamp) +maybe_focus_default_window (MetaDisplay *display, + MetaWindow *not_this_one, + guint32 timestamp) { - MetaStack *stack = workspace->display->stack; + MetaWorkspace *workspace; + MetaStack *stack = display->stack; g_autoptr (GList) focusable_windows = NULL; g_autoptr (GQueue) focus_candidates = NULL; GList *l; + if (not_this_one && not_this_one->workspace) + workspace = not_this_one->workspace; + else + workspace = display->workspace_manager->active_workspace; + /* Go through all the focusable windows and try to focus them * in order, waiting for a delay. The first one that replies to * the request (in case of take focus windows) changing the display @@ -988,7 +994,7 @@ meta_window_x11_focus (MetaWindow *window, window->display->focus_window->unmanaging) { meta_display_unset_input_focus (window->display, timestamp); - maybe_focus_default_window (window->workspace, window, + maybe_focus_default_window (window->display, window, timestamp); } }