wl_shell_surface_send_ping(ec->comp_data->shell.surface, serial);
}
-static void
-_e_shell_client_map_common_pre(E_Client *ec)
-{
- E_Desk *desk;
-
- if (!ec) return;
-
- e_view_client_signal_emit(e_client_view_get(ec), "e,state,map", "e");
-
- if (ec->use_splash)
- {
- ELOGF("LAUNCH", "SHOW real win after splash effect", ec);
- e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
- }
- ec->use_splash = EINA_FALSE;
-
- /* unset previous content */
- e_comp_object_content_unset(ec->frame);
-
- /* apply zoom */
- desk = e_comp_desk_find_by_ec(ec);
- if (desk) e_desk_client_zoom_apply(desk, ec);
-
- /* map this surface if needed */
- ec->visible = EINA_TRUE;
- e_view_client_show(e_client_view_get(ec));
- ec->comp_data->mapped = EINA_TRUE;
-}
-
static void
_e_shell_client_map_common_post(E_Client *ec)
{
ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
- _e_shell_client_map_common_pre(ec);
+ e_client_map_prepare(ec);
_e_shell_client_map_common_post(ec);
}
}
ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
- _e_shell_client_map_common_pre(ec);
+ e_client_map_prepare(ec);
/* force update */
e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
- _e_shell_client_map_common_pre(ec);
+ e_client_map_prepare(ec);
_e_shell_client_map_common_post(ec);
}
static void
_e_policy_client_del(E_Policy_Client *pc)
{
+ wl_list_remove(&pc->client_map_prepare.link);
wl_list_remove(&pc->client_parent_set.link);
wl_list_remove(&pc->pixmap_buffer_clear.link);
e_policy_stack_parent_set(policy_client->ec, parent_ec);
}
+static void
+_e_policy_client_cb_client_map_prepare(struct wl_listener *listener, void *data)
+{
+ E_Policy_Client *policy_client;
+ E_Client *ec;
+ E_Desk *desk;
+
+ policy_client = wl_container_of(listener, policy_client, client_map_prepare);
+
+ ec = policy_client->ec;
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ e_view_client_signal_emit(e_client_view_get(ec), "e,state,map", "e");
+
+ if (ec->use_splash)
+ {
+ ELOGF("LAUNCH", "SHOW real win after splash effect", ec);
+ e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
+ }
+ ec->use_splash = EINA_FALSE;
+
+ /* unset previous content */
+ e_comp_object_content_unset(ec->frame);
+
+ /* apply zoom */
+ desk = e_comp_desk_find_by_ec(ec);
+ if (desk) e_desk_client_zoom_apply(desk, ec);
+
+ /* map this surface if needed */
+ ec->visible = EINA_TRUE;
+ e_view_client_show(e_client_view_get(ec));
+ ec->comp_data->mapped = EINA_TRUE;
+}
+
EINTERN E_Policy_Client *
e_policy_client_add(E_Client *ec)
{
pc->client_parent_set.notify = _e_policy_client_cb_client_parent_set;
e_client_parent_set_listener_add(ec, &pc->client_parent_set);
+ pc->client_map_prepare.notify = _e_policy_client_cb_client_map_prepare;
+ e_client_map_prepare_listener_add(ec, &pc->client_map_prepare);
+
return pc;
}