restrict focusnext to the same monitor

This commit is contained in:
Devin J. Pohly 2020-04-23 00:38:09 -05:00
parent a634b3f2e4
commit 59b09576b9

15
dwl.c
View file

@ -411,15 +411,18 @@ focus(Client *c, struct wlr_surface *surface)
void void
focusnext(const Arg *arg) focusnext(const Arg *arg)
{ {
/* Focus the client on the selected monitor which comes first in tiling
* order after the currently selected client */
Client *sel = selclient(); Client *sel = selclient();
if (!sel) if (!sel)
return; return;
/* Find the selected client (top of fstack) and focus the client Client *c;
* following it in tiling order */ wl_list_for_each(c, &sel->link, link) {
Client *c = wl_container_of(sel->link.next, c, link); if (&c->link == &clients)
/* Skip the sentinel node if we wrap around the end of the list */ continue; /* wrap past the sentinel node */
if (&c->link == &clients) if (VISIBLEON(c, selmon))
c = wl_container_of(c->link.next, c, link); break; /* found it */
}
focus(c, c->xdg_surface->surface); focus(c, c->xdg_surface->surface);
} }