EINTERN void
e_zone_client_add(E_Zone *zone, E_Client *ec)
{
+ E_Desk *desk;
+
EINA_SAFETY_ON_NULL_RETURN(zone);
EINA_SAFETY_ON_NULL_RETURN(ec);
if (e_zone_has_ec(zone, ec)) return;
_e_zone_client_set(zone, ec);
- // FIXME: 1. To put the ec at current desk is the current wm policy.
- // This should be changed by wm policy.
- // 2. This code should be removed because e_client_zone_set() is called
- // inside e_client_desk_set(). It makes the infinite loop calls(circular calls).
- // e_client_desk_set() -> e_client_zone_set() -> e_zone_client_add() -> e_client_desk_set() -> ... and so on.
- if ((!ec->desk) || (ec->desk->zone != zone))
- e_desk_client_add(e_desk_current_get(zone), ec);
+ // Currently, ec is set to the current desk now.
+ // At this moment, ec should not belong to any desk
+ desk = e_desk_current_get(zone);
+ e_desk_client_add(desk, ec);
e_client_res_change_geometry_save(ec);
e_client_res_change_geometry_restore(ec);