discomfitor pushed a commit to branch master.

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

commit fda2442fe5b1326124f90bba15a1b5192664d77c
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Thu Jan 16 20:27:07 2014 -0500

    enforce correct geometry for client->saved.{x,y}
    
    this is for CLIENT geometry and does NOT include the zone x/y
---
 src/bin/e_client.c      | 14 +++++++-------
 src/bin/e_comp_object.c |  8 ++++----
 src/bin/e_comp_x.c      |  9 +++++++++
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index a35c5ee..9aaad42 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -3327,13 +3327,13 @@ e_client_maximize(E_Client *ec, E_Maximize max)
    if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
      {
         /* Horizontal hasn't been set */
-        ec->saved.x = ec->client.x;
+        ec->saved.x = ec->client.x - ec->zone->x;
         ec->saved.w = ec->client.w;
      }
    if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
      {
         /* Vertical hasn't been set */
-        ec->saved.y = ec->client.y;
+        ec->saved.y = ec->client.y - ec->zone->y;
         ec->saved.h = ec->client.h;
      }
 
@@ -3393,8 +3393,8 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
              evas_object_smart_callback_call(ec->frame, "unmaximize", NULL);
              ec->maximized = E_MAXIMIZE_NONE;
              e_client_util_move_resize_without_frame(ec,
-                                                     ec->saved.x,
-                                                     ec->saved.y,
+                                                     ec->saved.x + ec->zone->x,
+                                                     ec->saved.y + ec->zone->y,
                                                      ec->saved.w, ec->saved.h);
              ec->saved.x = ec->saved.y = ec->saved.w = ec->saved.h = 0;
              e_hints_window_size_unset(ec);
@@ -3484,8 +3484,8 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
      }
    else
      {
-        ec->saved.x = ec->x - ec->zone->x;
-        ec->saved.y = ec->y - ec->zone->y;
+        ec->saved.x = ec->client.x - ec->zone->x;
+        ec->saved.y = ec->client.y - ec->zone->y;
         ec->saved.w = ec->client.w;
         ec->saved.h = ec->client.h;
      }
@@ -3511,7 +3511,7 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
    if ((eina_list_count(ec->comp->zones) > 1) ||
        (policy == E_FULLSCREEN_RESIZE) || (!ecore_x_randr_query()))
      {
-        evas_object_geometry_set(ec->frame, ec->zone->x, ec->zone->y, 
ec->zone->w, ec->zone->h);
+        e_comp_object_util_fullscreen(ec->frame);
      }
    else if (policy == E_FULLSCREEN_ZOOM)
      {
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 9188a0b..c326a10 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -688,8 +688,8 @@ _e_comp_intercept_move(void *data, Evas_Object *obj, int x, 
int y)
         if ((!cw->ec->shading) && (!cw->ec->shaded))
           {
              cw->ec->changes.need_unmaximize = 1;
-             cw->ec->saved.x = ix;
-             cw->ec->saved.y = iy;
+             cw->ec->saved.x = ix - cw->ec->zone->x;
+             cw->ec->saved.y = iy - cw->ec->zone->y;
              cw->ec->saved.w = cw->ec->client.w;
              cw->ec->saved.h = cw->ec->client.h;
              EC_CHANGED(cw->ec);
@@ -734,8 +734,8 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int 
w, int h)
              cw->ec->changes.need_unmaximize = 1;
              cw->ec->saved.w = iw;
              cw->ec->saved.h = ih;
-             cw->ec->saved.x = cw->ec->client.x;
-             cw->ec->saved.y = cw->ec->client.y;
+             cw->ec->saved.x = cw->ec->client.x - cw->ec->zone->x;
+             cw->ec->saved.y = cw->ec->client.y - cw->ec->zone->y;
              EC_CHANGED(cw->ec);
              return;
           }
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index fd8eca2..21ebb1d 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -1426,8 +1426,17 @@ _e_comp_x_configure_request(void *data  EINA_UNUSED, int 
type EINA_UNUSED, Ecore
      {
         if ((ec->maximized & E_MAXIMIZE_TYPE) != E_MAXIMIZE_NONE)
           {
+             E_Zone *zone;
+
              ec->saved.x = x;
              ec->saved.y = y;
+
+             zone = e_comp_zone_xy_get(ec->comp, x, y);
+             if (zone && (zone->x || zone->y))
+               {
+                  ec->saved.x -= zone->x;
+                  ec->saved.y -= zone->y;
+               }
           }
         else
           {

-- 


Reply via email to