_e_policy_stack_transient_for_apply(E_Client *ec)
{
int raise;
+ E_Client *parent = NULL;
E_Client *child, *top, *bottom;
Eina_List *l;
Eina_Bool intercepted = EINA_FALSE;
+ parent = e_pixmap_find_client(E_PIXMAP_TYPE_WL, ec->icccm.transient_for);
+
+ if (parent != ec->parent)
+ {
+ ELOGF("POL", "CRITICAL. parent(win:%zx, ec:%p), ec->parent(win:%zx, ec:%p)...", ec,
+ e_client_util_win_get(parent), parent, e_client_util_win_get(ec->parent), ec->parent);
+ }
+
+ if (ec->icccm.transient_for != e_client_util_win_get(ec->parent))
+ {
+ ELOGF("POL", "CRITICAL. icccm.transient_for(%zx), ec->parent win(%zx)...", ec,
+ ec->icccm.transient_for, e_client_util_win_get(ec->parent));
+ }
+
+ if (parent)
+ {
+ if (ec->desk_area.desk_area && parent->desk_area.desk_area)
+ {
+ if (ec->desk_area.desk_area != parent->desk_area.desk_area)
+ {
+ e_desk_area_ec_reassign(parent->desk_area.desk_area, ec);
+ }
+ }
+ }
+
intercepted = e_policy_interceptor_call(E_POLICY_INTERCEPT_STACK_TRANSIENT_FOR,
ec);
if (intercepted)
return EINA_FALSE;
}
-static void
-_e_policy_stack_fetch_transient(E_Client *ec)
+EINTERN void
+e_policy_stack_transient_for_fetch(E_Client *ec)
{
- E_Client *parent = NULL;
-
+ if (!ec) return;
if (!ec->icccm.fetch.transient_for) return;
-
- parent = e_pixmap_find_client(E_PIXMAP_TYPE_WL, ec->icccm.transient_for);
-
- if (parent != ec->parent)
- {
- ELOGF("POL", "CRITICAL. parent(win:%zx, ec:%p), ec->parent(win:%zx, ec:%p)...", ec,
- e_client_util_win_get(parent), parent, e_client_util_win_get(ec->parent), ec->parent);
- }
-
- if (ec->icccm.transient_for != e_client_util_win_get(ec->parent))
- {
- ELOGF("POL", "CRITICAL. icccm.transient_for(%zx), ec->parent win(%zx)...", ec,
- ec->icccm.transient_for, e_client_util_win_get(ec->parent));
- }
-
- if (parent)
- {
- if (ec->desk_area.desk_area && parent->desk_area.desk_area)
- {
- if (ec->desk_area.desk_area != parent->desk_area.desk_area)
- {
- e_desk_area_ec_reassign(parent->desk_area.desk_area, ec);
- }
- }
- }
-
_e_policy_stack_transient_for_apply(ec);
-
ec->icccm.fetch.transient_for = EINA_FALSE;
}
e_policy_stack_transient_for_apply(E_Client *ec)
{
if (!ec) return;
- _e_policy_stack_fetch_transient(ec);
+ _e_policy_stack_transient_for_apply(ec);
}
void