add E_Client->maximize_anims_disabled to selectively disable maximize anims

for some clients it's impossible to animate resizing due to various race conditions
being created which will break the client
This commit is contained in:
Mike Blumenkrantz 2016-04-08 16:01:55 -04:00
parent b4b682cd6a
commit a7adf21c88
2 changed files with 11 additions and 6 deletions

View File

@ -1549,7 +1549,8 @@ _e_client_maximize_done(void *data, E_Efx_Map_Data *emd EINA_UNUSED, Evas_Object
static void
_e_client_maximize_run(E_Client *ec, int x, int y, int w, int h)
{
if (e_config->window_maximize_animate && (!starting) && (!ec->changes.need_maximize))
if (e_config->window_maximize_animate && (!ec->maximize_anims_disabled) &&
(!starting) && (!ec->changes.need_maximize))
{
Evas_Object *agent;
@ -3812,7 +3813,9 @@ e_client_maximize(E_Client *ec, E_Maximize max)
e_client_maximize_geometry_get(ec, max, &x, &y, &w, &h);
_e_client_maximize_run(ec, x, y, w, h);
}
if (ec->maximize_override && (starting || ec->changes.need_maximize || (!e_config->window_maximize_animate)))
if (ec->maximize_override && (ec->maximize_anims_disabled || starting ||
ec->changes.need_maximize ||
(!e_config->window_maximize_animate)))
ec->maximize_override = override;
/* Remove previous type */
@ -3957,7 +3960,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
_e_client_frame_update(ec);
e_hints_window_size_unset(ec);
}
if (e_config->window_maximize_animate)
if (e_config->window_maximize_animate && (!ec->maximize_anims_disabled))
ec->maximize_override = 1;
evas_object_smart_callback_call(ec->frame, "unmaximize", NULL);
e_client_resize_limit(ec, &w, &h);

View File

@ -684,6 +684,10 @@ struct E_Client
E_Focus_Policy focus_policy_override;
#ifdef HAVE_WAYLAND
uuid_t uuid;
#endif
Eina_Bool override : 1;
Eina_Bool input_only : 1;
Eina_Bool dialog : 1;
@ -695,12 +699,10 @@ struct E_Client
Eina_Bool ignored : 1; // client is comp-ignored
Eina_Bool no_shape_cut : 1; // client shape should not be cut
Eina_Bool maximize_override : 1; // client is doing crazy stuff and should "just do it" when moving/resizing
Eina_Bool maximize_anims_disabled : 1; // client cannot invoke anims or it will break
Eina_Bool keyboard_resizing : 1;
Eina_Bool on_post_updates : 1; // client is on the post update list
#ifdef HAVE_WAYLAND
uuid_t uuid;
#endif
};
#define e_client_focus_policy_click(ec) \