From: Gwanglim Lee Date: Thu, 23 Apr 2020 12:35:06 +0000 (+0900) Subject: e_service_launcher: fixed wrong operation for the backward direction X-Git-Tag: submit/tizen/20200424.090401~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=506f49691f452e6d421b2790fa20e60e31ebebff;p=platform%2Fupstream%2Fenlightenment.git e_service_launcher: fixed wrong operation for the backward direction activity: callee ec given ec: callee ec (transient_for child) <-- destroying by back key caller ec (transient_for parent) <-- will be shown In this case, the given ec is a callee ec and is transient_for with caller ec (lc) by group launching. Also, because of transient_for, caller ec is not iconified. Since the given ec is destroyed by the back key, we can't find out caller ec(lc) with activity and given ec. We have to use transient_for to find caller ec(lc). Change-Id: I82e1fa23000c78739866b4ead570d740c088815d --- diff --git a/src/bin/services/e_service_launcher.c b/src/bin/services/e_service_launcher.c index 6cff7008f3..b79b4dba9a 100644 --- a/src/bin/services/e_service_launcher.c +++ b/src/bin/services/e_service_launcher.c @@ -1505,6 +1505,26 @@ _launcher_handler_cb_hook_vis_hide(void *data EINA_UNUSED, E_Client *ec) /* find launcher handler again with provider ec */ lc = _launcher_handler_launcher_find(prov_ec); } + else + { + /* Backward case + * + * activity: callee ec + * given ec: callee ec (transient_for child) <-- destroying by back key + * caller ec (transient_for parent) <-- will be shown + * + * In this case, the given ec is a callee ec and is transient_for with caller ec (lc) by + * group launching. Also, because of transient_for, caller ec is not iconified. + * Since the given ec is destroyed by the back key, we can't find out caller ec(lc) with activity and given ec. + * We have to use transient_for to find caller ec(lc). + */ + ELOGF("LAUNCHER_SRV", "Hide hook of ec->parent(%p)", ec, ec->parent); + if (ec->parent) + { + lc = _launcher_handler_launcher_find(ec->parent); + if ((lc->launched_ec != ec)) lc = NULL; + } + } } if (!lc) return EINA_FALSE;