Fix xdg_shell focus logic

Moves and resizes tripped up the new xdg focus logic, so test if the
focus is leaving the client entirely before trying to determine if it's
leaving into a parent surface.
This commit is contained in:
Derek Foreman 2016-07-13 16:03:55 -05:00
parent e32db0e7e3
commit 248fa6d1e6
1 changed files with 5 additions and 2 deletions

View File

@ -681,8 +681,11 @@ _e_comp_wl_keyboard_leave(E_Client *ec)
if (ec->comp_data->is_xdg_surface)
{
/* If we left an xdg popup to enter some other (sub)surface
* of the same top level, we don't need to do anything */
if (_parent_client_contains_pointer(ec)) return;
* of the same top level, we don't need to do anything.
* We also test e_client_focused_get() because it will be NULL
* on moves which trip up _parent_client_contains_pointer() */
if (e_client_focused_get() &&
_parent_client_contains_pointer(ec)) return;
/* We only kbd focus top level xdg */
while (ec->parent) ec = ec->parent;