windowmap.c (997B)
1 void 2 window_set_state(Display *dpy, Window win, long state) 3 { 4 long data[] = { state, None }; 5 6 XChangeProperty(dpy, win, wmatom[WMState], wmatom[WMState], 32, 7 PropModeReplace, (unsigned char*)data, 2); 8 } 9 10 void 11 window_map(Display *dpy, Client *c, int deiconify) 12 { 13 Window win = c->win; 14 15 if (deiconify) 16 window_set_state(dpy, win, NormalState); 17 18 XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); 19 XMapWindow(dpy, win); 20 focus(NULL); 21 } 22 23 void 24 window_unmap(Display *dpy, Window win, Window root, int iconify) 25 { 26 static XWindowAttributes ca, ra; 27 28 XGetWindowAttributes(dpy, root, &ra); 29 XGetWindowAttributes(dpy, win, &ca); 30 31 /* Prevent UnmapNotify events */ 32 XSelectInput(dpy, root, ra.your_event_mask & ~SubstructureNotifyMask); 33 XSelectInput(dpy, win, ca.your_event_mask & ~StructureNotifyMask); 34 35 XUnmapWindow(dpy, win); 36 focus(NULL); 37 if (iconify) 38 window_set_state(dpy, win, IconicState); 39 40 XSelectInput(dpy, root, ra.your_event_mask); 41 XSelectInput(dpy, win, ca.your_event_mask); 42 }