summaryrefslogtreecommitdiff
path: root/patch/swaptags.c
blob: d6a72d7fcf84741c7f1c82115441ec03eca34c31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void
swaptags(const Arg *arg)
{
   unsigned int newtag = arg->ui & TAGMASK;
   unsigned int curtag = selmon->tagset[selmon->seltags];

   if (newtag == curtag || !curtag || (curtag & (curtag-1)))
       return;

   for (Client *c = selmon->clients; c != NULL; c = c->next) {
       if ((c->tags & newtag) || (c->tags & curtag))
           c->tags ^= curtag ^ newtag;

       if (!c->tags)
       		c->tags = newtag;
   }

   selmon->tagset[selmon->seltags] = newtag;

   focus(NULL);
   arrange(selmon);
}