67 XWindowAttributes wa; |
67 XWindowAttributes wa; |
68 |
68 |
69 wins = NULL; |
69 wins = NULL; |
70 if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { |
70 if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { |
71 for(i = 0; i < num; i++) { |
71 for(i = 0; i < num; i++) { |
72 if(!XGetWindowAttributes(dpy, wins[i], &wa)) |
72 if(!XGetWindowAttributes(dpy, wins[i], &wa) |
73 continue; |
73 || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) |
74 if(wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) |
|
75 continue; |
74 continue; |
76 if(wa.map_state == IsViewable) |
75 if(wa.map_state == IsViewable) |
77 manage(wins[i], &wa); |
76 manage(wins[i], &wa); |
78 } |
77 } |
79 } |
78 } |
102 cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); |
101 cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing); |
103 cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); |
102 cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur); |
104 /* init modifier map */ |
103 /* init modifier map */ |
105 numlockmask = 0; |
104 numlockmask = 0; |
106 modmap = XGetModifierMapping(dpy); |
105 modmap = XGetModifierMapping(dpy); |
107 for (i = 0; i < 8; i++) { |
106 for (i = 0; i < 8; i++) |
108 for (j = 0; j < modmap->max_keypermod; j++) { |
107 for (j = 0; j < modmap->max_keypermod; j++) { |
109 if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock)) |
108 if(modmap->modifiermap[i * modmap->max_keypermod + j] |
|
109 == XKeysymToKeycode(dpy, XK_Num_Lock)) |
110 numlockmask = (1 << i); |
110 numlockmask = (1 << i); |
111 } |
111 } |
112 } |
|
113 XFreeModifiermap(modmap); |
112 XFreeModifiermap(modmap); |
114 /* select for events */ |
113 /* select for events */ |
115 wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask |
114 wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask |
116 | EnterWindowMask | LeaveWindowMask; |
115 | EnterWindowMask | LeaveWindowMask; |
117 wa.cursor = cursor[CurNormal]; |
116 wa.cursor = cursor[CurNormal]; |