diff options
Diffstat (limited to 'dwm.c.rej')
| -rw-r--r-- | dwm.c.rej | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/dwm.c.rej b/dwm.c.rej new file mode 100644 index 0000000..3505670 --- /dev/null +++ b/dwm.c.rej @@ -0,0 +1,164 @@ +--- dwm.c ++++ dwm.c +@@ -1076,8 +1004,6 @@ manage(Window w, XWindowAttributes *wa) + c->mon->sel = c; + arrange(c->mon); + XMapWindow(dpy, c->win); +- if (term) +- swallow(term, c); + focus(NULL); + } + +@@ -1780,12 +1692,9 @@ unmanage(Client *c, int destroyed) + XUngrabServer(dpy); + } + free(c); +- +- if (!s) { +- arrange(m); +- focus(NULL); +- updateclientlist(); +- } ++ focus(NULL); ++ updateclientlist(); ++ arrange(m); + } + + void +@@ -2049,136 +1958,6 @@ view(const Arg *arg) + arrange(selmon); + } + +-pid_t +-winpid(Window w) +-{ +- +- pid_t result = 0; +- +-#ifdef __linux__ +- xcb_res_client_id_spec_t spec = {0}; +- spec.client = w; +- spec.mask = XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID; +- +- xcb_generic_error_t *e = NULL; +- xcb_res_query_client_ids_cookie_t c = xcb_res_query_client_ids(xcon, 1, &spec); +- xcb_res_query_client_ids_reply_t *r = xcb_res_query_client_ids_reply(xcon, c, &e); +- +- if (!r) +- return (pid_t)0; +- +- xcb_res_client_id_value_iterator_t i = xcb_res_query_client_ids_ids_iterator(r); +- for (; i.rem; xcb_res_client_id_value_next(&i)) { +- spec = i.data->spec; +- if (spec.mask & XCB_RES_CLIENT_ID_MASK_LOCAL_CLIENT_PID) { +- uint32_t *t = xcb_res_client_id_value_value(i.data); +- result = *t; +- break; +- } +- } +- +- free(r); +- +- if (result == (pid_t)-1) +- result = 0; +- +-#endif /* __linux__ */ +- +-#ifdef __OpenBSD__ +- Atom type; +- int format; +- unsigned long len, bytes; +- unsigned char *prop; +- pid_t ret; +- +- if (XGetWindowProperty(dpy, w, XInternAtom(dpy, "_NET_WM_PID", 0), 0, 1, False, AnyPropertyType, &type, &format, &len, &bytes, &prop) != Success || !prop) +- return 0; +- +- ret = *(pid_t*)prop; +- XFree(prop); +- result = ret; +- +-#endif /* __OpenBSD__ */ +- return result; +-} +- +-pid_t +-getparentprocess(pid_t p) +-{ +- unsigned int v = 0; +- +-#ifdef __linux__ +- FILE *f; +- char buf[256]; +- snprintf(buf, sizeof(buf) - 1, "/proc/%u/stat", (unsigned)p); +- +- if (!(f = fopen(buf, "r"))) +- return 0; +- +- fscanf(f, "%*u %*s %*c %u", &v); +- fclose(f); +-#endif /* __linux__*/ +- +-#ifdef __OpenBSD__ +- int n; +- kvm_t *kd; +- struct kinfo_proc *kp; +- +- kd = kvm_openfiles(NULL, NULL, NULL, KVM_NO_FILES, NULL); +- if (!kd) +- return 0; +- +- kp = kvm_getprocs(kd, KERN_PROC_PID, p, sizeof(*kp), &n); +- v = kp->p_ppid; +-#endif /* __OpenBSD__ */ +- +- return (pid_t)v; +-} +- +-int +-isdescprocess(pid_t p, pid_t c) +-{ +- while (p != c && c != 0) +- c = getparentprocess(c); +- +- return (int)c; +-} +- +-Client * +-termforwin(const Client *w) +-{ +- Client *c; +- Monitor *m; +- +- if (!w->pid || w->isterminal) +- return NULL; +- +- for (m = mons; m; m = m->next) { +- for (c = m->clients; c; c = c->next) { +- if (c->isterminal && !c->swallowing && c->pid && isdescprocess(c->pid, w->pid)) +- return c; +- } +- } +- +- return NULL; +-} +- +-Client * +-swallowingclient(Window w) +-{ +- Client *c; +- Monitor *m; +- +- for (m = mons; m; m = m->next) { +- for (c = m->clients; c; c = c->next) { +- if (c->swallowing && c->swallowing->win == w) +- return c; +- } +- } +- +- return NULL; +-} +- + Client * + wintoclient(Window w) + { |
