EINTERN void
e_zone_client_add(E_Zone *zone, E_Client *ec)
{
- E_Zone *ec_zone;
-
- ec_zone = e_comp_zone_find_by_ec(ec);
-
/* if the window does not lie in the new zone, move it so that it does */
if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, zone->x, zone->y, zone->w, zone->h))
{
int x, y;
- if (ec_zone)
- {
- /* first guess -- get offset from old zone, and apply to new zone */
- x = zone->x + (ec->x - ec_zone->x);
- y = zone->y + (ec->y - ec_zone->y);
- }
- else
- x = ec->x, y = ec->y;
+ x = ec->x, y = ec->y;
/* keep window from hanging off bottom and left */
if (x + ec->w > zone->x + zone->w) x += (zone->x + zone->w) - (x + ec->w);
// 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 != ec_zone))
- e_client_desk_set(ec, e_desk_current_get(ec_zone));
+ if ((!ec->desk) || (ec->desk->zone != zone))
+ e_client_desk_set(ec, e_desk_current_get(zone));
e_client_res_change_geometry_save(ec);
e_client_res_change_geometry_restore(ec);