diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 1af0d7f16..7fc645a18 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -2107,6 +2107,11 @@ _e_client_eval(E_Client *ec) rem_change = 1; prop |= E_CLIENT_PROPERTY_POS; } + if (ec->changes.need_rescale) + { + e_client_rescale(ec); + ec->changes.need_rescale = 0; + } if (ec->changes.reset_gravity) { @@ -3326,6 +3331,14 @@ e_client_rescale(E_Client *ec) E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); + if (e_comp->updating) + { + ec->changes.need_rescale = 1; + EC_CHANGED(ec); + return; + } + ec->changes.need_rescale = 0; + shaded = ec->shaded; shade_dir = ec->shade_dir; if (shaded) e_client_unshade(ec, shade_dir); diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 9aafa9897..3687ddfd1 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -586,6 +586,7 @@ struct E_Client Eina_Bool internal_state : 1; Eina_Bool need_maximize : 1; Eina_Bool need_unmaximize : 1; + Eina_Bool need_rescale : 1; } changes; unsigned int visible : 1; // client is set to be visible by display server (never use this)