spkp

Stacking wayland compositor
git clone git://git.z3bra.org/sp:kp.git
Log | Files | Refs

commit 9937532ed873f3f1b1da2e28fc7b2fa1ab2a50cb
parent 5a70d3af8c86f86ce61bf586772662ac6eb670b2
Author: Willy Goiffon <dev@z3bra.org>
Date:   Tue, 10 Nov 2020 13:28:19 +0100

Add simple client borders

Diffstat:
Mcompositor.c | 13+++++++++++--
Mconfig.def.h | 3+++
2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/compositor.c b/compositor.c @@ -84,6 +84,7 @@ struct output { struct window { struct state *server; struct wlr_xdg_surface *toplevel; + double x, y; int mapped; @@ -720,7 +721,7 @@ render(struct wlr_surface *surface, int x, int y, void *data) struct window *window; struct wlr_output *output; struct wlr_texture *texture; - struct wlr_box box; + struct wlr_box box, border; enum wl_output_transform transform; rdata = data; @@ -731,12 +732,20 @@ render(struct wlr_surface *surface, int x, int y, void *data) if (!texture) return; + transform = wlr_output_transform_invert(surface->current.transform); + box.x = window->x + x; box.y = window->y + y; box.width = surface->current.width; box.height = surface->current.height; - transform = wlr_output_transform_invert(surface->current.transform); + if (surface == window->toplevel->surface) { + border.x = box.x - bordersize; + border.y = box.y - bordersize; + border.width = box.width + bordersize * 2; + border.height = box.height + bordersize * 2; + wlr_render_rect(rdata->renderer, &border, bordercolor, output->transform_matrix); + } wlr_matrix_project_box(matrix, &box, transform, 0, output->transform_matrix); diff --git a/config.def.h b/config.def.h @@ -1,4 +1,7 @@ float background[4] = { 1.0, 0.6, 0.6, 0.3 }; +float bordercolor[4] = { 0.7, 0.7, 0.7, 1.0 }; + +int bordersize = 2; struct key keys[] = { { WLR_MODIFIER_LOGO, XKB_KEY_Escape, kb_terminate, {0} },