enforce correct geometry for client->saved.{x,y}
authorMike Blumenkrantz <zmike@samsung.com>
Fri, 17 Jan 2014 01:27:07 +0000 (20:27 -0500)
committerMike Blumenkrantz <zmike@samsung.com>
Fri, 17 Jan 2014 01:27:07 +0000 (20:27 -0500)
this is for CLIENT geometry and does NOT include the zone x/y

src/bin/e_client.c
src/bin/e_comp_object.c
src/bin/e_comp_x.c

index a35c5ee..9aaad42 100644 (file)
@@ -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)
      {
index 9188a0b..c326a10 100644 (file)
@@ -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;
           }
index fd8eca2..21ebb1d 100644 (file)
@@ -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
           {