glazier

the original window manipulator
Log | Files | Refs | Submodules | README | LICENSE

commit 4fb8675c4c39fd3bbd05d8a354d262fb08c4198b
parent 9a24b0f7e8a3a659c57db26712682e6688b9824a
Author: Willy Goiffon <dev@z3bra.org>
Date:   Thu, 24 Oct 2019 23:49:01 +0200

Do not reconfigure windows when not necessary

Diffstat:
glazier.c | 13+++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/glazier.c b/glazier.c @@ -389,9 +389,7 @@ cb_configure(xcb_generic_event_t *ev) if (verbose) fprintf(stderr, "%s 0x%08x %dx%d+%d+%d\n", - XEV(e), e->event, e->width, e->height, e->x, e->y); - - wm_teleport(e->window, e->x, e->y, e->width, e->height); + XEV(e), e->window, e->width, e->height, e->x, e->y); return 0; } @@ -399,6 +397,7 @@ cb_configure(xcb_generic_event_t *ev) static int cb_configreq(xcb_generic_event_t *ev) { + int x, y, w, h; xcb_configure_request_event_t *e; e = (xcb_configure_request_event_t *)ev; @@ -409,7 +408,13 @@ cb_configreq(xcb_generic_event_t *ev) e->width, e->height, e->x, e->y); - wm_teleport(e->window, e->x, e->y, e->width, e->height); + x = wm_get_attribute(e->window, ATTR_X); + y = wm_get_attribute(e->window, ATTR_Y); + w = wm_get_attribute(e->window, ATTR_W); + h = wm_get_attribute(e->window, ATTR_H); + if (e->x != x || e->y != y || e->width != w || e->height != h) + wm_teleport(e->window, e->x, e->y, e->width, e->height); + wm_restack(e->window, e->stack_mode); return 0;