| 152 |
152 |
|
/* function declarations */ |
| 153 |
153 |
|
static void applyrules(Client *c); |
| 154 |
154 |
|
static Bool applysizehints(Client *c, int *x, int *y, int *w, int *h, Bool interact); |
| 155 |
|
- |
static void arrange(void); |
|
155 |
+ |
static void arrange(Monitor *m); |
|
156 |
+ |
static void arrangemon(Monitor *m); |
| 156 |
157 |
|
static void attach(Client *c); |
| 157 |
158 |
|
static void attachstack(Client *c); |
| 158 |
159 |
|
static void buttonpress(XEvent *e); |
|
| 379 |
380 |
|
} |
| 380 |
381 |
|
|
| 381 |
382 |
|
void |
| 382 |
|
- |
arrange(void) { |
| 383 |
|
- |
Monitor *m; |
| 384 |
|
- |
|
| 385 |
|
- |
for(m = mons; m; m = m->next) |
|
383 |
+ |
arrange(Monitor *m) { |
|
384 |
+ |
if(m) |
|
385 |
+ |
showhide(m->stack); |
|
386 |
+ |
else for(m = mons; m; m = m->next) |
| 386 |
387 |
|
showhide(m->stack); |
| 387 |
388 |
|
focus(NULL); |
| 388 |
|
- |
for(m = mons; m; m = m->next) { |
| 389 |
|
- |
strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); |
| 390 |
|
- |
if(m->lt[m->sellt]->arrange) |
| 391 |
|
- |
m->lt[m->sellt]->arrange(m); |
| 392 |
|
- |
restack(m); |
| 393 |
|
- |
} |
|
389 |
+ |
if(m) |
|
390 |
+ |
arrangemon(m); |
|
391 |
+ |
else for(m = mons; m; m = m->next) |
|
392 |
+ |
arrangemon(m); |
|
393 |
+ |
} |
|
394 |
+ |
|
|
395 |
+ |
void |
|
396 |
+ |
arrangemon(Monitor *m) { |
|
397 |
+ |
strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); |
|
398 |
+ |
if(m->lt[m->sellt]->arrange) |
|
399 |
+ |
m->lt[m->sellt]->arrange(m); |
|
400 |
+ |
restack(m); |
| 394 |
401 |
|
} |
| 395 |
402 |
|
|
| 396 |
403 |
|
void |
|
| 546 |
553 |
|
updatebars(); |
| 547 |
554 |
|
for(m = mons; m; m = m->next) |
| 548 |
555 |
|
XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); |
| 549 |
|
- |
arrange(); |
|
556 |
+ |
arrange(NULL); |
| 550 |
557 |
|
} |
| 551 |
558 |
|
} |
| 552 |
559 |
|
} |
|
| 1139 |
1146 |
|
XMoveResizeWindow(dpy, c->win, c->x + 2 * sw, c->y, c->w, c->h); /* some windows require this */ |
| 1140 |
1147 |
|
XMapWindow(dpy, c->win); |
| 1141 |
1148 |
|
setclientstate(c, NormalState); |
| 1142 |
|
- |
arrange(); |
|
1149 |
+ |
arrange(c->mon); |
| 1143 |
1150 |
|
} |
| 1144 |
1151 |
|
|
| 1145 |
1152 |
|
void |
|
| 1265 |
1272 |
|
case XA_WM_TRANSIENT_FOR: |
| 1266 |
1273 |
|
XGetTransientForHint(dpy, c->win, &trans); |
| 1267 |
1274 |
|
if(!c->isfloating && (c->isfloating = (wintoclient(trans) != NULL))) |
| 1268 |
|
- |
arrange(); |
|
1275 |
+ |
arrange(c->mon); |
| 1269 |
1276 |
|
break; |
| 1270 |
1277 |
|
case XA_WM_NORMAL_HINTS: |
| 1271 |
1278 |
|
updatesizehints(c); |
|
| 1360 |
1367 |
|
XEvent ev; |
| 1361 |
1368 |
|
XWindowChanges wc; |
| 1362 |
1369 |
|
|
| 1363 |
|
- |
drawbars(); |
|
1370 |
+ |
drawbar(m); |
| 1364 |
1371 |
|
if(!m->sel) |
| 1365 |
1372 |
|
return; |
| 1366 |
1373 |
|
if(m->sel->isfloating || !m->lt[m->sellt]->arrange) |
|
| 1427 |
1434 |
|
attach(c); |
| 1428 |
1435 |
|
attachstack(c); |
| 1429 |
1436 |
|
focus(NULL); |
| 1430 |
|
- |
arrange(); |
|
1437 |
+ |
arrange(NULL); |
| 1431 |
1438 |
|
} |
| 1432 |
1439 |
|
|
| 1433 |
1440 |
|
void |
|
| 1442 |
1449 |
|
setlayout(const Arg *arg) { |
| 1443 |
1450 |
|
if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) |
| 1444 |
1451 |
|
selmon->sellt ^= 1; |
| 1445 |
|
- |
if(arg && arg->v) |
|
1452 |
+ |
if(arg && arg->v) { |
| 1446 |
1453 |
|
selmon->lt[selmon->sellt] = (Layout *)arg->v; |
|
1454 |
+ |
strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); |
|
1455 |
+ |
} |
| 1447 |
1456 |
|
if(selmon->sel) |
| 1448 |
|
- |
arrange(); |
|
1457 |
+ |
arrange(selmon); |
| 1449 |
1458 |
|
else |
| 1450 |
|
- |
drawbars(); |
|
1459 |
+ |
drawbar(selmon); |
| 1451 |
1460 |
|
} |
| 1452 |
1461 |
|
|
| 1453 |
1462 |
|
/* arg > 1.0 will set mfact absolutly */ |
|
| 1461 |
1470 |
|
if(f < 0.1 || f > 0.9) |
| 1462 |
1471 |
|
return; |
| 1463 |
1472 |
|
selmon->mfact = f; |
| 1464 |
|
- |
arrange(); |
|
1473 |
+ |
arrange(selmon); |
| 1465 |
1474 |
|
} |
| 1466 |
1475 |
|
|
| 1467 |
1476 |
|
void |
|
| 1558 |
1567 |
|
tag(const Arg *arg) { |
| 1559 |
1568 |
|
if(selmon->sel && arg->ui & TAGMASK) { |
| 1560 |
1569 |
|
selmon->sel->tags = arg->ui & TAGMASK; |
| 1561 |
|
- |
arrange(); |
|
1570 |
+ |
arrange(selmon); |
| 1562 |
1571 |
|
} |
| 1563 |
1572 |
|
} |
| 1564 |
1573 |
|
|
|
| 1615 |
1624 |
|
selmon->showbar = !selmon->showbar; |
| 1616 |
1625 |
|
updatebarpos(selmon); |
| 1617 |
1626 |
|
XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); |
| 1618 |
|
- |
arrange(); |
|
1627 |
+ |
arrange(selmon); |
| 1619 |
1628 |
|
} |
| 1620 |
1629 |
|
|
| 1621 |
1630 |
|
void |
|
| 1626 |
1635 |
|
if(selmon->sel->isfloating) |
| 1627 |
1636 |
|
resize(selmon->sel, selmon->sel->x, selmon->sel->y, |
| 1628 |
1637 |
|
selmon->sel->w, selmon->sel->h, False); |
| 1629 |
|
- |
arrange(); |
|
1638 |
+ |
arrange(selmon); |
| 1630 |
1639 |
|
} |
| 1631 |
1640 |
|
|
| 1632 |
1641 |
|
void |
|
| 1638 |
1647 |
|
newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); |
| 1639 |
1648 |
|
if(newtags) { |
| 1640 |
1649 |
|
selmon->sel->tags = newtags; |
| 1641 |
|
- |
arrange(); |
|
1650 |
+ |
arrange(selmon); |
| 1642 |
1651 |
|
} |
| 1643 |
1652 |
|
} |
| 1644 |
1653 |
|
|
|
| 1648 |
1657 |
|
|
| 1649 |
1658 |
|
if(newtagset) { |
| 1650 |
1659 |
|
selmon->tagset[selmon->seltags] = newtagset; |
| 1651 |
|
- |
arrange(); |
|
1660 |
+ |
arrange(selmon); |
| 1652 |
1661 |
|
} |
| 1653 |
1662 |
|
} |
| 1654 |
1663 |
|
|
|
| 1663 |
1672 |
|
|
| 1664 |
1673 |
|
void |
| 1665 |
1674 |
|
unmanage(Client *c, Bool destroyed) { |
|
1675 |
+ |
Monitor *m = c->mon; |
| 1666 |
1676 |
|
XWindowChanges wc; |
| 1667 |
1677 |
|
|
| 1668 |
1678 |
|
/* The server grab construct avoids race conditions. */ |
|
| 1681 |
1691 |
|
} |
| 1682 |
1692 |
|
free(c); |
| 1683 |
1693 |
|
focus(NULL); |
| 1684 |
|
- |
arrange(); |
|
1694 |
+ |
arrange(m); |
| 1685 |
1695 |
|
} |
| 1686 |
1696 |
|
|
| 1687 |
1697 |
|
void |
|
| 1908 |
1918 |
|
selmon->seltags ^= 1; /* toggle sel tagset */ |
| 1909 |
1919 |
|
if(arg->ui & TAGMASK) |
| 1910 |
1920 |
|
selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; |
| 1911 |
|
- |
arrange(); |
|
1921 |
+ |
arrange(selmon); |
| 1912 |
1922 |
|
} |
| 1913 |
1923 |
|
|
| 1914 |
1924 |
|
Client * |
|
| 1986 |
1996 |
|
detach(c); |
| 1987 |
1997 |
|
attach(c); |
| 1988 |
1998 |
|
focus(c); |
| 1989 |
|
- |
arrange(); |
|
1999 |
+ |
arrange(c->mon); |
| 1990 |
2000 |
|
} |
| 1991 |
2001 |
|
|
| 1992 |
2002 |
|
int |