return ret;
}
+EINTERN Eina_Bool
+e_policy_visibility_client_wait_child(E_Client *ec, E_Vis_Job_Type type)
+{
+ E_VIS_CLIENT_GET_OR_RETURN_VAL(vc, ec, EINA_FALSE);
+
+ vc->grab = _e_vis_client_grab_get(vc, type, __func__);
+ _e_vis_client_job_add(vc, type);
+ E_FREE_FUNC(vc->grab, _e_vis_grab_release);
+
+ return EINA_TRUE;
+}
+
E_API Eina_Bool
e_policy_visibility_client_activate(E_Client *ec)
{
E_Client *child;
Eina_List *l;
Eina_Bool ret = EINA_FALSE;
+ Eina_Bool ret_child = EINA_FALSE;
E_VIS_CLIENT_GET_OR_RETURN_VAL(vc, ec, EINA_FALSE);
/* uniconify its transients recursively */
if (e_config->transient.iconify)
{
+ Eina_Bool pend = EINA_FALSE;
l = eina_list_clone(ec->transients);
EINA_LIST_FREE(l, child)
- ret |= e_policy_visibility_client_uniconify(child, EINA_TRUE);
+ {
+ pend = e_policy_visibility_client_uniconify(child, EINA_TRUE);
+ if (pend)
+ {
+ ELOGF("POL", "uniconify_pending child (win:0x%08zx ec:%p)", ec, e_client_util_win_get(child), child);
+ ret_child = pend;
+ }
+ }
+ }
+
+ if ((ret == EINA_FALSE) && (ret_child == EINA_TRUE))
+ {
+ e_policy_visibility_client_wait_child(ec, E_VIS_JOB_TYPE_ACTIVATE);
+ ret = EINA_TRUE;
}
/* TODO find topmost activity client and emit signal */