From 3ae85a55c07d26e758ad79ebfa52ee5324e41698 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Fri, 8 May 2020 17:40:09 +0900 Subject: [PATCH] e_client: don't focus if child is focus deferred Change-Id: Ibcbcc2cfe7f46b5c940c19cc2b5dc21fe04c280b Signed-off-by: Junseok, Kim --- src/bin/e_client.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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; } -- 2.34.1