enforce correct geometry for client->saved.{x,y}

this is for CLIENT geometry and does NOT include the zone x/y
This commit is contained in:
Mike Blumenkrantz 2014-01-16 20:27:07 -05:00
parent ddc89ad46b
commit fda2442fe5
3 changed files with 20 additions and 11 deletions

View 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)
{

View 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;
}

View 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
{