fixed tagmon, re-using detach/detachstack and attach/attachstack
54dc0d54
2 file(s) · +18 −9
| 11 | 11 | X11LIB = /usr/X11R6/lib |
|
| 12 | 12 | ||
| 13 | 13 | # Xinerama, un-comment if you want it |
|
| 14 | - | #XINERAMALIBS = -L${X11LIB} -lXinerama |
|
| 15 | - | #XINERAMAFLAGS = -DXINERAMA |
|
| 14 | + | XINERAMALIBS = -L${X11LIB} -lXinerama |
|
| 15 | + | XINERAMAFLAGS = -DXINERAMA |
|
| 16 | 16 | ||
| 17 | 17 | # includes and libs |
|
| 18 | 18 | INCS = -I. -I/usr/include -I${X11INC} |
| 375 | 375 | ||
| 376 | 376 | void |
|
| 377 | 377 | attach(Client *c) { |
|
| 378 | - | c->next = selmon->clients; |
|
| 379 | - | selmon->clients = c; |
|
| 378 | + | c->next = c->mon->clients; |
|
| 379 | + | c->mon->clients = c; |
|
| 380 | 380 | } |
|
| 381 | 381 | ||
| 382 | 382 | void |
|
| 383 | 383 | attachstack(Client *c) { |
|
| 384 | - | c->snext = selmon->stack; |
|
| 385 | - | selmon->stack = c; |
|
| 384 | + | c->snext = c->mon->stack; |
|
| 385 | + | c->mon->stack = c; |
|
| 386 | 386 | } |
|
| 387 | 387 | ||
| 388 | 388 | void |
|
| 1475 | 1475 | void |
|
| 1476 | 1476 | tagmon(const Arg *arg) { |
|
| 1477 | 1477 | unsigned int i; |
|
| 1478 | + | Client *c; |
|
| 1478 | 1479 | Monitor *m; |
|
| 1479 | 1480 | ||
| 1481 | + | if(!(c = selmon->sel)) |
|
| 1482 | + | return; |
|
| 1480 | 1483 | for(i = 0, m = mons; m; m = m->next, i++) |
|
| 1481 | 1484 | if(i == arg->ui) { |
|
| 1482 | - | selmon->sel->m = m; |
|
| 1485 | + | detach(c); |
|
| 1486 | + | detachstack(c); |
|
| 1487 | + | c->mon = m; |
|
| 1488 | + | attach(c); |
|
| 1489 | + | attachstack(c); |
|
| 1490 | + | selmon->sel = selmon->stack; |
|
| 1491 | + | m->sel = c; |
|
| 1483 | 1492 | arrange(); |
|
| 1484 | 1493 | break; |
|
| 1485 | 1494 | } |
|
| 1695 | 1704 | for(tm = mons; tm; tm = tm->next) |
|
| 1696 | 1705 | if(tm->screen_number == m->screen_number) { |
|
| 1697 | 1706 | m->clients = tm->clients; |
|
| 1698 | - | m->stack = tm->stack; |
|
| 1707 | + | m->sel = m->stack = tm->stack; |
|
| 1699 | 1708 | tm->clients = NULL; |
|
| 1700 | 1709 | tm->stack = NULL; |
|
| 1701 | 1710 | for(c = m->clients; c; c = c->next) |
|
| 1715 | 1724 | while(tm->stack) { |
|
| 1716 | 1725 | c = tm->stack->snext; |
|
| 1717 | 1726 | tm->stack->snext = newmons->stack; |
|
| 1718 | - | newmons->stack = tm->stack; |
|
| 1727 | + | newmons->sel = newmons->stack = tm->stack; |
|
| 1719 | 1728 | tm->stack = c; |
|
| 1720 | 1729 | } |
|
| 1721 | 1730 | } |
|