e - fix fullscreen state revert on focusing of another window if child

check the newly focused window is not part of a parent tree back to a
fullscreen window e is considering unfullscreening on loss of focus.

fixes T8651

@fix
This commit is contained in:
Carsten Haitzler 2020-04-11 23:09:37 +01:00
parent 738369100b
commit 42100a1ae7
1 changed files with 10 additions and 1 deletions

View File

@ -3727,6 +3727,15 @@ e_client_focus_set_with_pointer(E_Client *ec)
}
}
static Eina_Bool
_e_client_is_in_parents(E_Client *ec, E_Client *ec_find)
{
if (ec == ec_find) return EINA_TRUE;
if (e_object_is_del(E_OBJECT(ec))) return EINA_FALSE;
if (ec->parent) return _e_client_is_in_parents(ec->parent, ec_find);
return EINA_FALSE;
}
EINTERN void
e_client_focused_set(E_Client *ec)
{
@ -3754,7 +3763,7 @@ e_client_focused_set(E_Client *ec)
/* but only if it's the same desk or one of the clients is sticky */
if ((desk == ec->desk) || (ec->sticky || ec2->sticky))
{
if (!eina_list_data_find(ec->transients, ec2))
if (!_e_client_is_in_parents(ec, ec2))
e_client_unfullscreen(ec2);
}
}