do not change E_Client->saved values during maximize if need_maximize is set

this is indicative of a deferred maximize, so don't re-set it and screw up
previously-set values
This commit is contained in:
Mike Blumenkrantz 2016-06-20 15:57:19 -04:00
parent b5ef8766f4
commit 9a9c09f514
1 changed files with 20 additions and 4 deletions

View File

@ -3798,6 +3798,18 @@ e_client_maximize(E_Client *ec, E_Maximize max)
((ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)) return;
if (ec->new_client)
{
if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
{
/* Horizontal hasn't been set */
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->zone->y;
ec->saved.h = ec->client.h;
}
ec->changes.need_maximize = 1;
ec->maximized &= ~E_MAXIMIZE_TYPE;
ec->maximized |= max;
@ -3813,14 +3825,18 @@ 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;
ec->saved.w = ec->client.w;
if ((!ec->changes.need_maximize) || (!ec->saved.x))
ec->saved.x = ec->client.x - ec->zone->x;
if ((!ec->changes.need_maximize) || (!ec->saved.w))
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;
ec->saved.h = ec->client.h;
if ((!ec->changes.need_maximize) || (!ec->saved.y))
ec->saved.y = ec->client.y - ec->zone->y;
if ((!ec->changes.need_maximize) || (!ec->saved.h))
ec->saved.h = ec->client.h;
}
ec->saved.zone = ec->zone->num;