core: Untangle input focus management

In all places (including src/wayland) we tap into meta_x11_display* focus
API, which then calls meta_display* API. This relation is backwards, so
rework input focus management so it's the other way around.

We now have high-level meta_display_(un)set_input_focus functions, which
perform the backend-independent maintenance, and calls into the X11
functions where relevant. These functions are what callers should use.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/420
This commit is contained in:
Carlos Garnacho
2018-12-30 21:23:07 +01:00
committed by Jonas Ådahl
parent 1d77641f0b
commit 86de79cfc5
9 changed files with 89 additions and 91 deletions

View File

@ -1308,8 +1308,7 @@ meta_workspace_focus_default_window (MetaWorkspace *workspace,
meta_topic (META_DEBUG_FOCUS,
"Setting focus to no_focus_window, since no valid "
"window to focus found.\n");
meta_x11_display_focus_the_no_focus_window (workspace->display->x11_display,
timestamp);
meta_display_unset_input_focus (workspace->display, timestamp);
}
}
}
@ -1381,8 +1380,7 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
else
{
meta_topic (META_DEBUG_FOCUS, "No MRU window to focus found; focusing no_focus_window.\n");
meta_x11_display_focus_the_no_focus_window (workspace->display->x11_display,
timestamp);
meta_display_unset_input_focus (workspace->display, timestamp);
}
}