forked from enlightenment/enlightenment
add/use helper function for rescaling individual clients
in any case where client needs to be rescaled to use new screen geometry certain things must happen, such as handling shaded state and forcing the new geometry to be applied
This commit is contained in:
parent
4f28e49f46
commit
20ea0ed150
|
@ -2868,11 +2868,7 @@ e_client_desk_set(E_Client *ec, E_Desk *desk)
|
|||
ecore_event_add(E_EVENT_CLIENT_DESK_SET, ev, (Ecore_End_Cb)_e_client_event_desk_set_free, NULL);
|
||||
|
||||
if (old_desk->zone == ec->zone)
|
||||
{
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
ec->pre_res_change.valid = 0;
|
||||
}
|
||||
e_client_rescale(ec);
|
||||
}
|
||||
|
||||
if (ec->stack.prev || ec->stack.next)
|
||||
|
@ -3321,6 +3317,23 @@ e_client_res_change_geometry_restore(E_Client *ec)
|
|||
memcpy(&ec->pre_res_change, &pre_res_change, sizeof(pre_res_change));
|
||||
}
|
||||
|
||||
E_API void
|
||||
e_client_rescale(E_Client *ec)
|
||||
{
|
||||
Eina_Bool shaded;
|
||||
int shade_dir;
|
||||
E_OBJECT_CHECK(ec);
|
||||
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
|
||||
|
||||
shaded = ec->shaded;
|
||||
shade_dir = ec->shade_dir;
|
||||
if (shaded) e_client_unshade(ec, shade_dir);
|
||||
ec->pre_res_change.valid = 0;
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
if (shaded) e_client_shade(ec, shade_dir);
|
||||
}
|
||||
|
||||
E_API void
|
||||
e_client_zone_set(E_Client *ec, E_Zone *zone)
|
||||
{
|
||||
|
@ -3380,9 +3393,7 @@ e_client_zone_set(E_Client *ec, E_Zone *zone)
|
|||
ecore_event_add(E_EVENT_CLIENT_ZONE_SET, ev, (Ecore_End_Cb)_e_client_event_zone_set_free, NULL);
|
||||
|
||||
e_remember_update(ec);
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
ec->pre_res_change.valid = 0;
|
||||
e_client_rescale(ec);
|
||||
}
|
||||
|
||||
E_API void
|
||||
|
@ -3866,7 +3877,7 @@ e_client_shade(E_Client *ec, E_Direction dir)
|
|||
{
|
||||
E_OBJECT_CHECK(ec);
|
||||
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
|
||||
if ((ec->shaded) || (ec->shading) || (ec->fullscreen) ||
|
||||
if (((!ec->shaded) && ec->shading) || (ec->shaded && (!ec->shading)) || (ec->fullscreen) ||
|
||||
((ec->maximized) && (!e_config->allow_manip))) return;
|
||||
if (!e_util_strcmp("borderless", ec->bordername)) return;
|
||||
if (!e_comp_object_frame_allowed(ec->frame)) return;
|
||||
|
|
|
@ -785,6 +785,7 @@ E_API void e_client_mouse_up(E_Client *ec, int button, Evas_Point *output, E_Bin
|
|||
E_API void e_client_mouse_move(E_Client *ec, Evas_Point *output);
|
||||
E_API void e_client_res_change_geometry_save(E_Client *bd);
|
||||
E_API void e_client_res_change_geometry_restore(E_Client *ec);
|
||||
E_API void e_client_rescale(E_Client *ec);
|
||||
E_API void e_client_zone_set(E_Client *ec, E_Zone *zone);
|
||||
E_API void e_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h);
|
||||
E_API E_Client *e_client_above_get(const E_Client *ec);
|
||||
|
|
|
@ -1829,8 +1829,7 @@ e_comp_clients_rescale(void)
|
|||
EINA_LIST_FREE(tmp, ec)
|
||||
{
|
||||
ec->pre_res_change.valid = 0;
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
e_client_rescale(ec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3871,10 +3871,7 @@ _e_comp_x_hook_client_fetch(void *d EINA_UNUSED, E_Client *ec)
|
|||
}
|
||||
}
|
||||
if (ec->placed && (!e_client_util_resizing_get(ec)) && (!ec->override))
|
||||
{
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
}
|
||||
e_client_rescale(ec);
|
||||
}
|
||||
if (ec->icccm.min_w > 32767) ec->icccm.min_w = 32767;
|
||||
if (ec->icccm.min_h > 32767) ec->icccm.min_h = 32767;
|
||||
|
|
Loading…
Reference in New Issue