~ruther/dwl

fdbe9ee29a62eb19938b6a8a39cb7b208b84ec16 — Devin J. Pohly 5 years ago 10bf0ff
Don't change tiling order in focusnext()

Use the focus stack instead to determine which client is focused
1 files changed, 7 insertions(+), 5 deletions(-)

M dwl.c
M dwl.c => dwl.c +7 -5
@@ 413,16 413,18 @@ focus(Client *c, struct wlr_surface *surface)
void
focusnext(const Arg *arg)
{
	/* Cycle to the next client */
	/* XXX will need more logic with clients on different monitors */
	if (wl_list_length(&clients) < 2) {
		return;
	}
	Client *c = wl_container_of(clients.next, c, link);
	/* Find the selected client (top of fstack) and focus the client
	 * following it in tiling order */
	Client *c = wl_container_of(fstack.next, c, flink);
	Client *n = wl_container_of(c->link.next, n, link);
	/* Skip the sentinel node if we wrap around the end of the list */
	if (&n->link == &clients)
		n = wl_container_of(n->link.next, n, link);
	focus(n, n->xdg_surface->surface);
	/* Move the previous client to the end of the list */
	wl_list_remove(&c->link);
	wl_list_insert(clients.prev, &c->link);
}

void

Do not follow this link