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 5b9dec214e
commit d17fe0614e
1 changed files with 20 additions and 4 deletions

View File

@ -4063,14 +4063,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;
}
@ -4293,8 +4301,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;