check changes.pos during client maximize/fullscreen and adjust window coords

using these coords when the changes.pos flag is set should result in more accurate
results for positioning when removing the state
This commit is contained in:
Mike Blumenkrantz 2017-03-10 15:57:15 -05:00
parent db62cf1020
commit 45683d3fcd
1 changed files with 20 additions and 4 deletions

View File

@ -3796,14 +3796,22 @@ 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->zone->x;
if (ec->changes.pos)
e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, &ec->saved.x, NULL);
else
ec->saved.x = ec->client.x;
ec->saved.x -= ec->zone->x;
if (ec->visible)
ec->saved.w = ec->client.w;
}
if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
{
/* Vertical hasn't been set */
ec->saved.y = ec->client.y - ec->zone->y;
if (ec->changes.pos)
e_comp_object_frame_xy_adjust(ec->frame, 0, ec->y, NULL, &ec->saved.y);
else
ec->saved.y = ec->client.y;
ec->saved.y -= ec->zone->y;
if (ec->visible)
ec->saved.h = ec->client.h;
}
@ -4026,8 +4034,16 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
}
else
{
ec->saved.x = ec->client.x - ec->zone->x;
ec->saved.y = ec->client.y - ec->zone->y;
if (ec->changes.pos)
e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->saved.x, &ec->saved.y);
else
{
ec->saved.x = ec->client.x;
ec->saved.y = ec->client.y;
}
ec->saved.x -= ec->zone->x;
ec->saved.y -= ec->zone->y;
if (ec->visible)
{
ec->saved.w = ec->client.w;