diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 90a081e7e..06a8dece1 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -679,6 +679,7 @@ struct E_Client Eina_Bool layer_block : 1; // client is doing crazy stuff and should not be relayered in protocol 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 }; #define e_client_focus_policy_click(ec) \ diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index d61307336..39dff0e3c 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -694,13 +694,16 @@ _e_comp_intercept_move(void *data, Evas_Object *obj, int x, int y) cw->ec->x = x, cw->ec->y = y; return; } - if ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL) - y = cw->y; - if ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL) - x = cw->x; + if (!cw->ec->maximize_override) + { + if ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_VERTICAL) + y = cw->y; + if ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_HORIZONTAL) + x = cw->x; + } ix = x + cw->client_inset.l; iy = y + cw->client_inset.t; - if (cw->ec->maximized && ((cw->ec->x != x) || (cw->ec->y != y)) && + if (cw->ec->maximized && (!cw->ec->maximize_override) && ((cw->ec->x != x) || (cw->ec->y != y)) && ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) != E_MAXIMIZE_VERTICAL) && ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) != E_MAXIMIZE_HORIZONTAL)) { @@ -751,7 +754,7 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) /* calculate client size */ iw = w - cw->client_inset.l - cw->client_inset.r; ih = h - cw->client_inset.t - cw->client_inset.b; - if (cw->ec->maximized && ((cw->ec->w != w) || (cw->ec->h != h))) + if (cw->ec->maximized && (!cw->ec->maximize_override) && ((cw->ec->w != w) || (cw->ec->h != h))) { if ((!e_config->allow_manip) && ((cw->ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)) return; if ((!cw->ec->shading) && (!cw->ec->shaded))