forked from enlightenment/enlightenment
optimize e_client_res_change_geometry_restore()
performing the entire unfullscreen/unmaximize routine causes a significant amount of overhead, and it also breaks window geometries in wayland due to synchronization
This commit is contained in:
parent
573df39c17
commit
0e416648df
|
@ -2949,16 +2949,32 @@ e_client_res_change_geometry_restore(E_Client *ec)
|
||||||
|
|
||||||
if (ec->fullscreen)
|
if (ec->fullscreen)
|
||||||
{
|
{
|
||||||
e_client_unfullscreen(ec);
|
if ((eina_list_count(e_comp->zones) > 1) ||
|
||||||
e_client_fullscreen(ec, e_config->fullscreen_policy);
|
(e_config->fullscreen_policy == E_FULLSCREEN_RESIZE))
|
||||||
|
evas_object_geometry_set(ec->frame, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
e_client_unfullscreen(ec);
|
||||||
|
e_client_fullscreen(ec, e_config->fullscreen_policy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (ec->maximized != E_MAXIMIZE_NONE)
|
else if (ec->maximized != E_MAXIMIZE_NONE)
|
||||||
{
|
{
|
||||||
E_Maximize max;
|
int x, y, w, h;
|
||||||
|
|
||||||
max = ec->maximized;
|
if (e_client_maximize_geometry_get(ec, ec->maximized, &x, &y, &w, &h))
|
||||||
e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
|
{
|
||||||
e_client_maximize(ec, max);
|
Eina_Bool override = ec->maximize_override;
|
||||||
|
ec->maximize_override = 1;
|
||||||
|
evas_object_geometry_set(ec->frame, x, y, w, h);
|
||||||
|
ec->maximize_override = override;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
E_Maximize max = ec->maximized;
|
||||||
|
e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
|
||||||
|
e_client_maximize(ec, max);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue