discomfitor pushed a commit to branch enlightenment-0.18.

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

commit 7870eda74d25289aec7222325741e33ab0866700
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Feb 3 12:47:06 2014 -0500

    bugfix: screen limits policy no longer breaks X client positioning
---
 src/bin/e_border.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_border.c b/src/bin/e_border.c
index 874b01b..7ebb732 100644
--- a/src/bin/e_border.c
+++ b/src/bin/e_border.c
@@ -3341,14 +3341,16 @@ e_border_idler_before(void)
                        bd->changes.visible = 0;
                     }
 
-                  if (bd->zone && (!bd->new_client) &&
-                      (!E_INSIDE(bd->x, bd->y, 0, 0, bd->zone->w - 5, 
bd->zone->h - 5)) &&
-                      (!E_INSIDE(bd->x, bd->y, 0 - bd->w + 5, 0 - bd->h + 5, 
bd->zone->w - 5, bd->zone->h - 5))
+                  if ((!bd->new_client) &&
+                      (!E_INSIDE(bd->x, bd->y, 0, 0, 
bd->zone->container->manager->w - 5, bd->zone->container->manager->h - 5)) &&
+                      (!E_INSIDE(bd->x, bd->y, 0 - bd->w + 5, 0 - bd->h + 5, 
bd->zone->container->manager->w - 5, bd->zone->container->manager->h - 5))
                       )
                     {
                        if (e_config->screen_limits != 
E_SCREEN_LIMITS_COMPLETELY)
                          _e_border_move_lost_window_to_center(bd);
                     }
+                  else
+                    e_border_zone_set(bd, 
e_container_zone_at_point_get(bd->zone->container, bd->x, bd->y));
                }
              e_container_border_list_free(bl);
 
@@ -5300,13 +5302,19 @@ _e_border_cb_window_configure_request(void *data  
__UNUSED__,
                     }
                   else
                     {
-                       if ((e_config->screen_limits != 
E_SCREEN_LIMITS_COMPLETELY) && bd->zone &&
-                           (!E_INSIDE(x, y, 0, 0, bd->zone->w - 5, bd->zone->h 
- 5)) &&
-                           (!E_INSIDE(x, y, 0 - bd->w + 5, 0 - bd->h + 5, 
bd->zone->w - 5, bd->zone->h - 5))
+                       if ((e_config->screen_limits != 
E_SCREEN_LIMITS_COMPLETELY) &&
+                           (!E_INSIDE(x, y, 0, 0, 
bd->zone->container->manager->w - 5, bd->zone->container->manager->h - 5)) &&
+                           (!E_INSIDE(x, y, 0 - 
bd->zone->container->manager->w + 5, 0 - bd->zone->container->manager->h + 5, 
bd->zone->container->manager->w - 5, bd->zone->container->manager->h - 5))
                           )
                          _e_border_move_lost_window_to_center(bd);
                        else
-                         e_border_move(bd, x, y);
+                         {
+                            E_Zone *zone;
+
+                            zone = 
e_container_zone_at_point_get(bd->zone->container, x, y);
+                            e_border_zone_set(bd, zone);
+                            e_border_move(bd, x, y);
+                         }
                     }
                }
           }

-- 


Reply via email to