}
}
-static E_Client *
-_e_client_transient_child_top_get(E_Client *ec, Eina_Bool consider_focus)
+E_API E_Client *
+e_client_transient_child_top_get(E_Client *ec, Eina_Bool consider_focus)
{
E_Client *top_ec = NULL;
Eina_List *transient_list = NULL;
E_Client *focus_ec = ec;
if (ec->transients)
- focus_ec = _e_client_transient_child_top_get(ec, EINA_TRUE);
+ focus_ec = e_client_transient_child_top_get(ec, EINA_TRUE);
evas_object_focus_set(focus_ec->frame, 1);
}
E_API Eina_Bool e_client_desk_window_profile_available_check(E_Client *ec, const char *profile);
E_API void e_client_desk_window_profile_wait_desk_set(E_Client *ec, E_Desk *desk);
E_API void e_client_layout_cb_set(E_Client_Layout_Cb cb);
+E_API E_Client *e_client_transient_child_top_get(E_Client *ec, Eina_Bool consider_focus);
E_API void e_client_visibility_calculate(void);
E_API void e_client_visibility_skip_set(E_Client *ec, Eina_Bool skip);
E_API void e_client_post_raise_lower_set(E_Client *ec, Eina_Bool raise_set, Eina_Bool lower_set);
void
e_policy_stack_hook_pre_post_fetch(E_Client *ec)
{
+ E_Client *new_focus = NULL;
E_Policy_Stack *ps;
ps = eina_hash_find(hash_pol_stack, &ec);
else
ps->transient.win = ec->icccm.transient_for;
+ if (ec->parent)
+ {
+ if (ec->parent == e_client_focused_get())
+ {
+ new_focus = e_client_transient_child_top_get(ec->parent, EINA_TRUE);
+ if (new_focus)
+ evas_object_focus_set(new_focus->frame, 1);
+ }
+ }
+
ps->transient.fetched = 0;
}
}