some more additions/fixes 2a0fc84c
Anselm R. Garbe · 2006-07-12 00:00 5 file(s) · +32 −3
client.c +11 −2
93 93
	}
94 94
	XUnmapWindow(dpy, c->title);
95 95
	draw_bar();
96 +
	discard_events(EnterWindowMask);
96 97
	XFlush(dpy);
97 98
}
98 99
116 117
	XGetTransientForHint(dpy, c->win, &c->trans);
117 118
	twa.override_redirect = 1;
118 119
	twa.background_pixmap = ParentRelative;
119 -
	twa.event_mask = SubstructureNotifyMask | ExposureMask;
120 +
	twa.event_mask = ExposureMask;
120 121
121 122
	c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
122 123
			0, DefaultDepth(dpy, screen), CopyFromParent,
191 192
	XFlush(dpy);
192 193
	XSetErrorHandler(error_handler);
193 194
	XUngrabServer(dpy);
194 -
	discard_events(EnterWindowMask);
195 195
	if(stack)
196 196
		focus(stack);
197 197
}
198 198
199 +
Client *
200 +
gettitle(Window w)
201 +
{
202 +
	Client *c;
203 +
	for(c = clients; c; c = c->next)
204 +
		if(c->title == w)
205 +
			return c;
206 +
	return NULL;
207 +
}
199 208
200 209
Client *
201 210
getclient(Window w)
cmd.c +16 −0
20 20
}
21 21
22 22
void
23 +
sel(void *aux)
24 +
{
25 +
	const char *arg = aux;
26 +
	Client *c;
27 +
28 +
	if(!arg || !stack)
29 +
		return;
30 +
	if(!strncmp(arg, "next", 5))
31 +
		focus(stack->snext ? stack->snext : stack);
32 +
	else if(!strncmp(arg, "prev", 5)) {
33 +
		for(c = stack; c && c->snext; c = c->snext);
34 +
		focus(c ? c : stack);
35 +
	}
36 +
}
37 +
38 +
void
23 39
kill(void *aux)
24 40
{
25 41
	Client *c = stack;
event.c +1 −1
146 146
	Client *c;
147 147
148 148
	if(ev->count == 0) {
149 -
		if((c = getclient(ev->window)))
149 +
		if((c = gettitle(ev->window)))
150 150
			draw_client(c);
151 151
		else if(ev->window == barwin)
152 152
			draw_bar();
kb.c +2 −0
19 19
static Key key[] = {
20 20
	{ Mod1Mask, XK_Return, run, term },
21 21
	{ Mod1Mask, XK_p, run, proglist }, 
22 +
	{ Mod1Mask, XK_k, sel, "prev"}, 
23 +
	{ Mod1Mask, XK_j, sel, "next"}, 
22 24
	{ Mod1Mask | ShiftMask, XK_c, kill, NULL}, 
23 25
	{ Mod1Mask | ShiftMask, XK_q, quit, NULL},
24 26
};
wm.h +2 −0
63 63
extern void run(void *aux);
64 64
extern void quit(void *aux);
65 65
extern void kill(void *aux);
66 +
extern void sel(void *aux);
66 67
67 68
/* client.c */
68 69
extern void manage(Window w, XWindowAttributes *wa);
73 74
extern void draw_client(Client *c);
74 75
extern void resize(Client *c);
75 76
extern void update_size(Client *c);
77 +
extern Client *gettitle(Window w);
76 78
77 79
/* event.c */
78 80
extern unsigned int discard_events(long even_mask);