focusmaster.c 481 B

123456789101112131415161718192021222324252627282930
  1. void
  2. focusmaster(const Arg *arg)
  3. {
  4. Client *master;
  5. Monitor *m = selmon;
  6. int i;
  7. if (m->nmaster < 1)
  8. return;
  9. if (!m->sel || (m->sel->isfullscreen && lockfullscreen))
  10. return;
  11. master = nexttiled(m->clients);
  12. if (!master)
  13. return;
  14. for (i = 0; !(m->tagset[m->seltags] & 1 << i); i++);
  15. i++;
  16. if (m->sel == master) {
  17. if (m->tagmarked[i] && ISVISIBLE(m->tagmarked[i]))
  18. focus(m->tagmarked[i]);
  19. } else {
  20. m->tagmarked[i] = m->sel;
  21. focus(master);
  22. }
  23. restack(m);
  24. }