block updating window remembers while applying them

some attrs (e.g., desk setting) change the position/size of a window before
another attr is set, changing the original value

fix T5295
This commit is contained in:
Mike Blumenkrantz 2017-08-18 15:52:52 -04:00
parent 35594d43f9
commit 528bad7252
2 changed files with 4 additions and 1 deletions

View File

@ -307,7 +307,7 @@ e_remember_apply(E_Remember *rem, E_Client *ec)
if (!rem) if (!rem)
return; return;
rem->applying = 1;
if (rem->apply & E_REMEMBER_APPLY_ZONE) if (rem->apply & E_REMEMBER_APPLY_ZONE)
{ {
E_Zone *zone; E_Zone *zone;
@ -577,6 +577,7 @@ e_remember_apply(E_Remember *rem, E_Client *ec)
} }
} }
rem->applying = 0;
if (temporary) if (temporary)
_e_remember_free(rem); _e_remember_free(rem);
} }
@ -713,6 +714,7 @@ _e_remember_event_free(void *d EINA_UNUSED, void *event)
static void static void
_e_remember_update(E_Client *ec, E_Remember *rem) _e_remember_update(E_Client *ec, E_Remember *rem)
{ {
if (rem->applying) return;
if (rem->apply & E_REMEMBER_APPLY_POS || if (rem->apply & E_REMEMBER_APPLY_POS ||
rem->apply & E_REMEMBER_APPLY_SIZE) rem->apply & E_REMEMBER_APPLY_SIZE)
{ {

View File

@ -118,6 +118,7 @@ struct _E_Remember
} prop; } prop;
Eina_Stringshare *uuid; Eina_Stringshare *uuid;
int pid; int pid;
Eina_Bool applying : 1;
}; };
EINTERN int e_remember_init(E_Startup_Mode mode); EINTERN int e_remember_init(E_Startup_Mode mode);