e_comp_object_render_update_del(ec->frame);
E_OBJECT(ec)->references++;
- if (ec->fullscreen)
- {
- ec->desk->fullscreen_clients = eina_list_remove(ec->desk->fullscreen_clients, ec);
- if (!ec->desk->fullscreen_clients)
- e_comp_render_queue();
- }
+
if (ec->new_client)
e_comp->new_clients--;
e_uuid_store_entry_del(ec->uuid);
- e_desk_client_del(ec->desk, ec);
-
free(ec);
}
focus_stack = eina_list_remove(focus_stack, ec);
e_client_focus_defer_unset(ec);
#endif
- e_desk_visible_client_iconified_list_remove(ec->desk, ec);
if (ec == e_comp_object_dim_client_get())
{
ec->base_output_resolution.transform = NULL;
E_FREE_FUNC(ec->base_output_resolution.hook_subsurf_create, e_comp_wl_hook_del);
- // desk_zoom
- e_client_transform_core_remove(ec, ec->desk_zoom.transform);
- e_util_transform_del(ec->desk_zoom.transform);
- ec->desk_zoom.transform = NULL;
- E_FREE_FUNC(ec->desk_zoom.hook_subsurf_create, e_comp_wl_hook_del);
-
if (ec->transform_core.transform_list)
{
E_Util_Transform *transform;
ec->transform_core.result.enable = EINA_FALSE;
- e_client_desk_area_set(ec, NULL);
- e_util_transform_del(ec->desk_area.transform);
- ec->desk_area.transform = NULL;
-
_e_client_resize_object_del(ec);
e_comp_visibility_calculation_set(EINA_TRUE);
static void
_e_zone_cb_hook_client_del(void *d, E_Client *ec)
{
- evas_object_data_del(ec->frame, ZONE_EC_DATA_KEY);
+ E_Zone *zone;
+ E_Desk *desk;
+
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ zone = (E_Zone *)d;
+ EINA_SAFETY_ON_NULL_RETURN(zone);
+
+ // FIXME: A ec is set the current zone now.
+ // We need to make a policy for the placement of the ec at the zone.
+ if (zone != e_zone_current_get()) return;
+
+ desk = e_zone_desk_find_by_ec(zone, ec);
+ EINA_SAFETY_ON_NULL_RETURN(desk);
+
+ e_desk_visible_client_iconified_list_remove(desk, ec);
+
+ // desk_zoom
+ e_client_transform_core_remove(ec, ec->desk_zoom.transform);
+ e_util_transform_del(ec->desk_zoom.transform);
+ ec->desk_zoom.transform = NULL;
+ E_FREE_FUNC(ec->desk_zoom.hook_subsurf_create, e_comp_wl_hook_del);
+
+ e_client_desk_area_set(ec, NULL);
+ e_util_transform_del(ec->desk_area.transform);
+ ec->desk_area.transform = NULL;
+
+ if (ec->fullscreen)
+ {
+ desk->fullscreen_clients = eina_list_remove(desk->fullscreen_clients, ec);
+ if (!desk->fullscreen_clients)
+ e_comp_render_queue();
+ }
+
+ e_desk_client_del(desk, ec);
}
static void