wl_shell_surface_send_ping(ec->comp_data->shell.surface, serial);
}
-static void
-_e_shell_client_map_common_post(E_Client *ec)
-{
- if (!ec) return;
-
- if ((!ec->iconic) && (!e_client_util_ignored_get(ec)))
- {
- if (ec->parent)
- {
- e_policy_stack_transient_for_apply(ec);
-
- ec->post_lower = EINA_FALSE;
- ec->post_raise = EINA_FALSE;
- }
-
- if (!e_comp_wl_subsurface_check(ec))
- {
- if (ec->post_lower)
- {
- ELOGF("SHELL", "lower called by post lower flag", ec);
- e_client_lower(ec);
- }
- else if (ec->post_raise)
- {
- ELOGF("SHELL", "raise called by post raise flag", ec);
- e_client_raise(ec);
- }
-
- ec->post_lower = EINA_FALSE;
- ec->post_raise = EINA_FALSE;
- }
- }
-
- ec->first_mapped = 1;
-
- e_policy_visibility_client_hide_job_cancel(ec);
- if (!(ec->iconic && e_client_is_iconified_by_client(ec)) && !ec->bg_state && (ec->show_pending.count == 0))
- e_vis_client_check_send_pre_visibility_event(ec, EINA_FALSE);
-
- ELOGF("COMP", "Un-Set launching flag", ec);
- ec->launching = EINA_FALSE;
-
- EC_CHANGED(ec);
-
- e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
-}
-
static void
_e_shell_surface_map(struct wl_resource *resource)
{
ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
e_client_map_prepare(ec);
- _e_shell_client_map_common_post(ec);
+ e_client_map_post(ec);
}
}
e_comp_wl_surface_commit(ec);
- _e_shell_client_map_common_post(ec);
+ e_client_map_post(ec);
}
ec->map_timer = NULL;
return ECORE_CALLBACK_CANCEL;
ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
e_client_map_prepare(ec);
- _e_shell_client_map_common_post(ec);
+ e_client_map_post(ec);
}
static void
static void
_e_policy_client_del(E_Policy_Client *pc)
{
+ wl_list_remove(&pc->client_map_post.link);
wl_list_remove(&pc->client_map_prepare.link);
wl_list_remove(&pc->client_parent_set.link);
ec->comp_data->mapped = EINA_TRUE;
}
+static void
+_e_policy_client_cb_client_map_post(struct wl_listener *listener, void *data)
+{
+ E_Policy_Client *policy_client;
+ E_Client *ec;
+
+ policy_client = wl_container_of(listener, policy_client, client_map_post);
+
+ ec = policy_client->ec;
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ if ((!ec->iconic) && (!e_client_util_ignored_get(ec)))
+ {
+ if (ec->parent)
+ {
+ e_policy_stack_transient_for_apply(ec);
+
+ ec->post_lower = EINA_FALSE;
+ ec->post_raise = EINA_FALSE;
+ }
+
+ if (!e_comp_wl_subsurface_check(ec))
+ {
+ if (ec->post_lower)
+ {
+ ELOGF("SHELL", "lower called by post lower flag", ec);
+ e_client_lower(ec);
+ }
+ else if (ec->post_raise)
+ {
+ ELOGF("SHELL", "raise called by post raise flag", ec);
+ e_client_raise(ec);
+ }
+
+ ec->post_lower = EINA_FALSE;
+ ec->post_raise = EINA_FALSE;
+ }
+ }
+
+ ec->first_mapped = 1;
+
+ e_policy_visibility_client_hide_job_cancel(ec);
+ if (!(ec->iconic && e_client_is_iconified_by_client(ec)) && !ec->bg_state && (ec->show_pending.count == 0))
+ e_vis_client_check_send_pre_visibility_event(ec, EINA_FALSE);
+
+ ELOGF("COMP", "Un-Set launching flag", ec);
+ ec->launching = EINA_FALSE;
+
+ EC_CHANGED(ec);
+
+ e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
+}
+
EINTERN E_Policy_Client *
e_policy_client_add(E_Client *ec)
{
pc->client_map_prepare.notify = _e_policy_client_cb_client_map_prepare;
e_client_map_prepare_listener_add(ec, &pc->client_map_prepare);
+ pc->client_map_post.notify = _e_policy_client_cb_client_map_post;
+ e_client_map_post_listener_add(ec, &pc->client_map_post);
+
return pc;
}