discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d293b368b871cec83d0fff307cff78da81f32429

commit d293b368b871cec83d0fff307cff78da81f32429
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Feb 3 12:43:08 2014 -0500

    bugfix: screen limits policy no longer breaks X client positioning
    
    this has been broken since it was added, and I strongly regret allowing it 
to be added.
---
 src/bin/e_client.c |  6 ++++--
 src/bin/e_comp_x.c | 28 ++++++++++++----------------
 2 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index eb891f8..c0462d1 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -2095,13 +2095,15 @@ e_client_idler_before(void)
                }
 
              if ((!ec->new_client) && (!e_client_util_ignored_get(ec)) &&
-                 (!E_INSIDE(ec->x, ec->y, 0, 0, ec->zone->w - 5, ec->zone->h - 
5)) &&
-                 (!E_INSIDE(ec->x, ec->y, 0 - ec->w + 5, 0 - ec->h + 5, 
ec->zone->w - 5, ec->zone->h - 5))
+                 (!E_INSIDE(ec->x, ec->y, 0, 0, ec->comp->man->w - 5, 
ec->comp->man->h - 5)) &&
+                 (!E_INSIDE(ec->x, ec->y, 0 - ec->w + 5, 0 - ec->h + 5, 
ec->comp->man->w - 5, ec->comp->man->h - 5))
                  )
                {
                   if (e_config->screen_limits != E_SCREEN_LIMITS_COMPLETELY)
                     _e_client_move_lost_window_to_center(ec);
                }
+             else
+               e_client_zone_set(ec, e_comp_zone_xy_get(ec->comp, ec->x, 
ec->y));
           }
 
 
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 0fd4238..1db5cc4 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1485,25 +1485,21 @@ _e_comp_x_configure_request(void *data  EINA_UNUSED, 
int type EINA_UNUSED, Ecore
           }
         else
           {
-             if (ec->zone)
-               {
-                  /* client is completely outside the zone, policy does not 
allow */
-                  if (((!E_INTERSECTS(x, y, ec->w, ec->h, ec->zone->x, 
ec->zone->y, ec->zone->w - 5, ec->zone->h - 5)) &&
-                      (e_config->screen_limits != E_SCREEN_LIMITS_COMPLETELY)) 
||
-                      /* client is partly outside the zone, policy does not 
allow */
-                      (((!E_INSIDE(x, y, ec->zone->x, ec->zone->y, ec->zone->w 
- 5, ec->zone->h - 5)) &&
-                       (!E_INSIDE(x + ec->w, y, ec->zone->x, ec->zone->y, 
ec->zone->w - 5, ec->zone->h - 5)) &&
-                       (!E_INSIDE(x, y + ec->h, ec->zone->x, ec->zone->y, 
ec->zone->w - 5, ec->zone->h - 5)) &&
-                       (!E_INSIDE(x + ec->w, y + ec->h, ec->zone->x, 
ec->zone->y, ec->zone->w - 5, ec->zone->h - 5))) &&
-                       (e_config->screen_limits == E_SCREEN_LIMITS_WITHIN))
-                     )
-                    e_comp_object_util_center(ec->frame);
-                  else
-                    evas_object_move(ec->frame, x, y);
-               }
+             /* client is completely outside the screen, policy does not allow 
*/
+             if (((!E_INTERSECTS(x, y, ec->w, ec->h, ec->comp->man->x, 
ec->comp->man->y, ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
+                 (e_config->screen_limits != E_SCREEN_LIMITS_COMPLETELY)) ||
+                 /* client is partly outside the zone, policy does not allow */
+                 (((!E_INSIDE(x, y, ec->comp->man->x, ec->comp->man->y, 
ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
+                  (!E_INSIDE(x + ec->w, y, ec->comp->man->x, ec->comp->man->y, 
ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
+                  (!E_INSIDE(x, y + ec->h, ec->comp->man->x, ec->comp->man->y, 
ec->comp->man->w - 5, ec->comp->man->h - 5)) &&
+                  (!E_INSIDE(x + ec->w, y + ec->h, ec->comp->man->x, 
ec->comp->man->y, ec->comp->man->w - 5, ec->comp->man->h - 5))) &&
+                  (e_config->screen_limits == E_SCREEN_LIMITS_WITHIN))
+                )
+               e_comp_object_util_center(ec->frame);
              else
                {
                   evas_object_move(ec->frame, x, y);
+                  e_client_zone_set(ec, e_comp_zone_xy_get(ec->comp, x, y));
                }
           }
      }

-- 


Reply via email to