restrict focusnext to the same monitor
This commit is contained in:
parent
a634b3f2e4
commit
59b09576b9
1 changed files with 9 additions and 6 deletions
15
dwl.c
15
dwl.c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue