{
E_Client *defered_focus_ec = NULL, *reverted_focus_ec = NULL;
E_Client *ec = NULL, *old_focused = NULL, *cec = NULL;
+ Eina_List *child_list = NULL;
+ Eina_Bool child_deferred;
EINA_SAFETY_ON_NULL_RETURN(zone);
if (zone->display_state == E_ZONE_DISPLAY_STATE_OFF) return;
if (focused && (focused->layer > ec->layer)) continue;
else if (!focused && reverted_focus_ec && (reverted_focus_ec->layer > ec->layer)) continue;
+ // check transient_for child defered
+ child_deferred = EINA_FALSE;
+ child_list = eina_list_clone(ec->transients);
+ EINA_LIST_FREE(child_list, cec)
+ {
+ if (eina_list_data_find(defer_focus_stack, cec))
+ {
+ child_deferred = EINA_TRUE;
+ break;
+ }
+ }
+ if (child_deferred) continue;
+
defered_focus_ec = ec;
break;
}