mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-09 08:18:09 +02:00
exposay: do not account panel size to compute exposay area
Commit "desktop-shell: make get_output_work_area() global" allowed the usage of get_output_work_area() in exposay. This is necessary to avoid overlapping the panel when rendering exposay's surfaces. Use get_output_work_area() to not take into account the panel size, instead of considering that the whole screen is available to render exposay's surfaces. Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
This commit is contained in:
parent
0c59e92f0c
commit
b68454e893
1 changed files with 15 additions and 10 deletions
|
|
@ -218,6 +218,7 @@ exposay_layout(struct desktop_shell *shell, struct shell_output *shell_output)
|
||||||
struct exposay_output *eoutput = &shell_output->eoutput;
|
struct exposay_output *eoutput = &shell_output->eoutput;
|
||||||
struct weston_view *view;
|
struct weston_view *view;
|
||||||
struct exposay_surface *esurface, *highlight = NULL;
|
struct exposay_surface *esurface, *highlight = NULL;
|
||||||
|
pixman_rectangle32_t exposay_area;
|
||||||
int w, h;
|
int w, h;
|
||||||
int pad;
|
int pad;
|
||||||
int i;
|
int i;
|
||||||
|
|
@ -241,6 +242,10 @@ exposay_layout(struct desktop_shell *shell, struct shell_output *shell_output)
|
||||||
return EXPOSAY_LAYOUT_OVERVIEW;
|
return EXPOSAY_LAYOUT_OVERVIEW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get exposay area and position, taking into account
|
||||||
|
* the shell panel position and size */
|
||||||
|
get_output_work_area(shell, output, &exposay_area);
|
||||||
|
|
||||||
/* Lay the grid out as square as possible, losing surfaces from the
|
/* Lay the grid out as square as possible, losing surfaces from the
|
||||||
* bottom row if required. Start with fixed padding of a 10% margin
|
* bottom row if required. Start with fixed padding of a 10% margin
|
||||||
* around the outside and 80px internal padding between surfaces, and
|
* around the outside and 80px internal padding between surfaces, and
|
||||||
|
|
@ -258,23 +263,23 @@ exposay_layout(struct desktop_shell *shell, struct shell_output *shell_output)
|
||||||
eoutput->grid_size++;
|
eoutput->grid_size++;
|
||||||
last_row_removed = pow(eoutput->grid_size, 2) - eoutput->num_surfaces;
|
last_row_removed = pow(eoutput->grid_size, 2) - eoutput->num_surfaces;
|
||||||
|
|
||||||
eoutput->hpadding_outer = (output->width / 10);
|
eoutput->hpadding_outer = (exposay_area.width / 10);
|
||||||
eoutput->vpadding_outer = (output->height / 10);
|
eoutput->vpadding_outer = (exposay_area.height / 10);
|
||||||
eoutput->padding_inner = 80;
|
eoutput->padding_inner = 80;
|
||||||
|
|
||||||
w = output->width - (eoutput->hpadding_outer * 2);
|
w = exposay_area.width - (eoutput->hpadding_outer * 2);
|
||||||
w -= eoutput->padding_inner * (eoutput->grid_size - 1);
|
w -= eoutput->padding_inner * (eoutput->grid_size - 1);
|
||||||
w /= eoutput->grid_size;
|
w /= eoutput->grid_size;
|
||||||
|
|
||||||
h = output->height - (eoutput->vpadding_outer * 2);
|
h = exposay_area.height - (eoutput->vpadding_outer * 2);
|
||||||
h -= eoutput->padding_inner * (eoutput->grid_size - 1);
|
h -= eoutput->padding_inner * (eoutput->grid_size - 1);
|
||||||
h /= eoutput->grid_size;
|
h /= eoutput->grid_size;
|
||||||
|
|
||||||
eoutput->surface_size = (w < h) ? w : h;
|
eoutput->surface_size = (w < h) ? w : h;
|
||||||
if (eoutput->surface_size > (output->width / 2))
|
if ((uint32_t)eoutput->surface_size > (exposay_area.width / 2))
|
||||||
eoutput->surface_size = output->width / 2;
|
eoutput->surface_size = exposay_area.width / 2;
|
||||||
if (eoutput->surface_size > (output->height / 2))
|
if ((uint32_t)eoutput->surface_size > (exposay_area.height / 2))
|
||||||
eoutput->surface_size = output->height / 2;
|
eoutput->surface_size = exposay_area.height / 2;
|
||||||
|
|
||||||
pad = eoutput->surface_size + eoutput->padding_inner;
|
pad = eoutput->surface_size + eoutput->padding_inner;
|
||||||
|
|
||||||
|
|
@ -301,9 +306,9 @@ exposay_layout(struct desktop_shell *shell, struct shell_output *shell_output)
|
||||||
esurface->row = i / eoutput->grid_size;
|
esurface->row = i / eoutput->grid_size;
|
||||||
esurface->column = i % eoutput->grid_size;
|
esurface->column = i % eoutput->grid_size;
|
||||||
|
|
||||||
esurface->x = output->x + eoutput->hpadding_outer;
|
esurface->x = exposay_area.x + eoutput->hpadding_outer;
|
||||||
esurface->x += pad * esurface->column;
|
esurface->x += pad * esurface->column;
|
||||||
esurface->y = output->y + eoutput->vpadding_outer;
|
esurface->y = exposay_area.y + eoutput->vpadding_outer;
|
||||||
esurface->y += pad * esurface->row;
|
esurface->y += pad * esurface->row;
|
||||||
|
|
||||||
if (esurface->row == eoutput->grid_size - 1)
|
if (esurface->row == eoutput->grid_size - 1)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue