comparison wm.c @ 10:703255003abb

changed how manage client works
author Anselm R. Garbe <garbeam@wmii.de>
date Tue, 11 Jul 2006 13:02:22 +0200
parents d567f430a81d
children 5cc5e55a132d
comparison
equal deleted inserted replaced
9:d567f430a81d 10:703255003abb
18 Window root, barwin; 18 Window root, barwin;
19 Atom net_atom[NetLast]; 19 Atom net_atom[NetLast];
20 Cursor cursor[CurLast]; 20 Cursor cursor[CurLast];
21 XRectangle rect, barrect; 21 XRectangle rect, barrect;
22 Bool running = True; 22 Bool running = True;
23 Client *clients = NULL;
24 23
25 char *bartext, tag[256]; 24 char *bartext, tag[256];
26 int screen, sel_screen; 25 int screen, sel_screen;
27 26
28 /* draw structs */
29 Brush brush = {0}; 27 Brush brush = {0};
28 Client *clients = NULL;
30 29
31 enum { WM_PROTOCOL_DELWIN = 1 }; 30 enum { WM_PROTOCOL_DELWIN = 1 };
32 31
33 static Bool other_wm_running; 32 static Bool other_wm_running;
33 static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
34 static int (*x_error_handler) (Display *, XErrorEvent *); 34 static int (*x_error_handler) (Display *, XErrorEvent *);
35 static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
36 35
37 static void 36 static void
38 usage() 37 usage()
39 { 38 {
40 fputs("usage: gridwm [-v]\n", stderr); 39 fputs("usage: gridwm [-v]\n", stderr);
54 if(!XGetWindowAttributes(dpy, wins[i], &wa)) 53 if(!XGetWindowAttributes(dpy, wins[i], &wa))
55 continue; 54 continue;
56 if(wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) 55 if(wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
57 continue; 56 continue;
58 if(wa.map_state == IsViewable) 57 if(wa.map_state == IsViewable)
59 manage(create_client(wins[i], &wa)); 58 manage(wins[i], &wa);
60 } 59 }
61 } 60 }
62 if(wins) 61 if(wins)
63 XFree(wins); 62 XFree(wins);
64 } 63 }
67 * There's no way to check accesses to destroyed windows, thus 66 * There's no way to check accesses to destroyed windows, thus
68 * those cases are ignored (especially on UnmapNotify's). 67 * those cases are ignored (especially on UnmapNotify's).
69 * Other types of errors call Xlib's default error handler, which 68 * Other types of errors call Xlib's default error handler, which
70 * calls exit(). 69 * calls exit().
71 */ 70 */
72 static int 71 int
73 error_handler(Display *dpy, XErrorEvent *error) 72 error_handler(Display *dpy, XErrorEvent *error)
74 { 73 {
75 if(error->error_code == BadWindow 74 if(error->error_code == BadWindow
76 || (error->request_code == X_SetInputFocus 75 || (error->request_code == X_SetInputFocus
77 && error->error_code == BadMatch) 76 && error->error_code == BadMatch)