EINTERN void e_policy_stack_shutdown(void);
EINTERN void e_policy_stack_transient_for_set(E_Client *child, E_Client *parent);
EINTERN void e_policy_stack_transient_for_apply(E_Client *ec);
+EINTERN void e_policy_stack_transient_child_raise(E_Client *ec);
+EINTERN void e_policy_stack_transient_child_lower(E_Client *ec);
EINTERN void e_policy_stack_cb_client_remove(E_Client *ec);
EINTERN void e_policy_stack_hook_pre_fetch(E_Client *ec);
_e_policy_stack_fetch_transient(ec);
}
+void e_policy_stack_transient_child_raise(E_Client *ec)
+{
+ E_Client *parent;
+
+ if (!ec) return;
+ parent = ec->parent;
+
+ if (parent)
+ {
+ parent->transients = eina_list_remove(parent->transients, ec);
+ parent->transients = eina_list_append(parent->transients, ec);
+ }
+}
+
+void e_policy_stack_transient_child_lower(E_Client *ec)
+{
+ E_Client *parent;
+
+ if (!ec) return;
+ parent = ec->parent;
+
+ if (parent)
+ {
+ parent->transients = eina_list_remove(parent->transients, ec);
+ parent->transients = eina_list_prepend(parent->transients, ec);
+ }
+}
+
void
e_policy_stack_cb_client_remove(E_Client *ec)
{
ELOGF("TZPOL", "ACTIVATE", ec);
+ if (ec->parent)
+ e_policy_stack_transient_child_raise(ec);
+
e_policy_hook_call(E_POLICY_HOOK_CLIENT_ACTIVE_REQ, ec);
ec->post_lower = EINA_FALSE;
ELOGF("TZPOL", "RAISE", ec);
+ if (ec->parent)
+ e_policy_stack_transient_child_raise(ec);
+
e_policy_hook_call(E_POLICY_HOOK_CLIENT_RAISE_REQ, ec);
e_client_raise(ec);
ELOGF("TZPOL", "LOWER", ec);
+ if (ec->parent)
+ e_policy_stack_transient_child_lower(ec);
+
e_policy_hook_call(E_POLICY_HOOK_CLIENT_LOWER_REQ, ec);
if (e_policy_visibility_client_lower(ec))
EINA_SAFETY_ON_NULL_RETURN(ec->frame);
ELOGF("TZPOL", "LOWER by res id:%d", ec, res_id);
+
+ if (ec->parent)
+ e_policy_stack_transient_child_lower(ec);
+
e_client_lower(ec);
if ((ec->comp_data) && (!ec->comp_data->mapped))