fake client-side geometry during wl (un)maximize interception

fixes internal window maximize
This commit is contained in:
Mike Blumenkrantz 2016-04-11 13:41:19 -04:00
parent 1facf33ddf
commit 005ad4e986
1 changed files with 20 additions and 8 deletions

View File

@ -605,19 +605,25 @@ _e_comp_wl_evas_cb_unmaximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void
ec->comp_data->maximizing = 1;
else if (!e_client_has_xwindow(ec))
{
int w, h, ew, eh;
int w, h, ew, eh, *ecw, *ech;
unsigned int pmax = ec->maximized;
ec->comp_data->max = *max;
if (ec->internal)
ecw = &ec->client.w, ech = &ec->client.h;
else
ecw = &ec->w, ech = &ec->h;
if ((!e_config->window_maximize_animate) || ec->maximize_anims_disabled)
{
e_client_unmaximize_geometry_get(ec, *max, NULL, NULL, &w, &h);
ew = ec->w, eh = ec->h;
ec->w = w, ec->h = h;
if (ec->internal)
e_comp_object_frame_wh_unadjust(ec->frame, w, h, &w, &h);
ew = *ecw, eh = *ech;
*ecw = w, *ech = h;
}
ec->maximized = 0;
_e_comp_wl_configure_send(ec, 0);
if ((!e_config->window_maximize_animate) || ec->maximize_anims_disabled)
ec->w = ew, ec->h = eh;
*ecw = ew, *ech = eh;
ec->maximized = pmax;
*max = 0;
}
@ -634,19 +640,25 @@ _e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void *
ec->comp_data->maximizing = 1;
else if (!e_client_has_xwindow(ec))
{
int w, h, ew, eh;
int w, h, ew, eh, *ecw, *ech;
unsigned int pmax = ec->maximized;
ec->comp_data->max = *max;
if (ec->internal)
ecw = &ec->client.w, ech = &ec->client.h;
else
ecw = &ec->w, ech = &ec->h;
if ((!e_config->window_maximize_animate) || ec->maximize_anims_disabled)
{
e_client_maximize_geometry_get(ec, *max, NULL, NULL, &w, &h);
ew = ec->w, eh = ec->h;
ec->w = w, ec->h = h;
if (ec->internal)
e_comp_object_frame_wh_unadjust(ec->frame, w, h, &w, &h);
ew = *ecw, eh = *ech;
*ecw = w, *ech = h;
}
ec->maximized = *max;
_e_comp_wl_configure_send(ec, 0);
if ((!e_config->window_maximize_animate) || ec->maximize_anims_disabled)
ec->w = ew, ec->h = eh;
*ecw = ew, *ech = eh;
ec->maximized = pmax;
*max = 0;
}