1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
--- dwm.c 2025-01-16 21:07:02.942737362 +0100
+++ dwm.c 2024-06-25 01:55:26.771203825 +0200
@@ -49,7 +48,7 @@
#define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask))
#define INTERSECT(x,y,w,h,m) (MAX(0, MIN((x)+(w),(m)->wx+(m)->ww) - MAX((x),(m)->wx)) \
* MAX(0, MIN((y)+(h),(m)->wy+(m)->wh) - MAX((y),(m)->wy)))
-#define ISVISIBLE(C) (C->swallowed == NULL && (C->tags & C->mon->tagset[C->mon->seltags]))
+#define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags]))
#define LENGTH(X) (sizeof X / sizeof X[0])
#define MOUSEMASK (BUTTONMASK|PointerMotionMask)
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
@@ -400,69 +386,6 @@ arrangemon(Monitor *m)
m->lt[m->sellt]->arrange(m);
}
-pid_t
-wintopid(Window window) {
- XResClientIdSpec spec;
- spec.client = window;
- spec.mask = XRES_CLIENT_ID_XID;
-
- long count;
- XResClientIdValue *output;
- XResQueryClientIds(dpy, 1, &spec, &count, &output);
-
- pid_t pid = -1;
-
- for (int i = 0; i < count; ++i)
- if (output[i].spec.mask == XRES_CLIENT_ID_PID_MASK) {
- pid = *(pid_t *)output[i].value;
- break;
- }
-
- XResClientIdsDestroy(count, output);
-
- return pid;
-}
-
-void
-copyclientpos(Client *dst, Client *src) {
- dst->bw = src->bw;
- resizeclient(dst, src->x, src->y, src->w, src->h);
- dst->oldx = src->oldx;
- dst->oldy = src->oldy;
- dst->oldw = src->oldw;
- dst->oldh = src->oldh;
- dst->oldbw = src->oldbw;
- dst->oldstate = src->oldstate;
- dst->isfullscreen = src->isfullscreen;
- dst->isfloating = src->isfloating;
- dst->tags = src->tags;
- dst->mon = src->mon;
-}
-
-void
-checkswallowed(Client *c) {
- pid_t pid = wintopid(c->win);
-
- if(pid < 0) return;
- for(SwallowDef *sd = swallowlist; sd != NULL; sd = sd->next) {
- if(pid == sd->pid) {
- c->swallower = sd->swallower;
- copyclientpos(c, sd->swallower);
-
- c->next_swallowed = c->swallower->swallowed;
- c->swallower->swallowed = c;
-
- c->next = c->swallower->next;
- c->swallower->next = c;
-
- c->snext = c->swallower->snext;
- c->swallower->snext = c;
-
- return;
- }
- }
-}
-
void
attach(Client *c)
{
|