From: Junseok, Kim Date: Fri, 8 May 2020 08:40:09 +0000 (+0900) Subject: e_client: don't focus if child is focus deferred X-Git-Tag: submit/tizen/20200508.090411^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F16%2F232916%2F1;p=platform%2Fupstream%2Fenlightenment.git e_client: don't focus if child is focus deferred Change-Id: Ibcbcc2cfe7f46b5c940c19cc2b5dc21fe04c280b Signed-off-by: Junseok, Kim --- diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 79971c2b4c..29a3821560 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3602,6 +3602,8 @@ _e_client_focus_calculate(E_Zone *zone) { 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; @@ -3655,6 +3657,19 @@ _e_client_focus_calculate(E_Zone *zone) 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; }