equal
deleted
inserted
replaced
57 sel = c; |
57 sel = c; |
58 if(old && old != c) |
58 if(old && old != c) |
59 drawtitle(old); |
59 drawtitle(old); |
60 drawtitle(c); |
60 drawtitle(c); |
61 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
61 XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
62 XSync(dpy, False); |
|
63 while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); |
|
64 } |
62 } |
65 |
63 |
66 void |
64 void |
67 focusnext(Arg *arg) |
65 focusnext(Arg *arg) |
68 { |
66 { |
75 togglemax(NULL); |
73 togglemax(NULL); |
76 |
74 |
77 if(!(c = getnext(sel->next))) |
75 if(!(c = getnext(sel->next))) |
78 c = getnext(clients); |
76 c = getnext(clients); |
79 if(c) { |
77 if(c) { |
80 higher(c); |
|
81 focus(c); |
78 focus(c); |
|
79 restack(); |
82 } |
80 } |
83 } |
81 } |
84 |
82 |
85 void |
83 void |
86 focusprev(Arg *arg) |
84 focusprev(Arg *arg) |
96 if(!(c = getprev(sel->prev))) { |
94 if(!(c = getprev(sel->prev))) { |
97 for(c = clients; c && c->next; c = c->next); |
95 for(c = clients; c && c->next; c = c->next); |
98 c = getprev(c); |
96 c = getprev(c); |
99 } |
97 } |
100 if(c) { |
98 if(c) { |
101 higher(c); |
|
102 focus(c); |
99 focus(c); |
|
100 restack(); |
103 } |
101 } |
104 } |
102 } |
105 |
103 |
106 Client * |
104 Client * |
107 getclient(Window w) |
105 getclient(Window w) |
176 dx = -dx; |
174 dx = -dx; |
177 dy = -dy; |
175 dy = -dy; |
178 } |
176 } |
179 c->x += dx; |
177 c->x += dx; |
180 c->y += dy; |
178 c->y += dy; |
181 } |
|
182 |
|
183 void |
|
184 higher(Client *c) |
|
185 { |
|
186 XRaiseWindow(dpy, c->win); |
|
187 XRaiseWindow(dpy, c->title); |
|
188 } |
179 } |
189 |
180 |
190 void |
181 void |
191 killclient(Arg *arg) |
182 killclient(Arg *arg) |
192 { |
183 { |
269 if(!c->isfloat) |
260 if(!c->isfloat) |
270 c->isfloat = trans |
261 c->isfloat = trans |
271 || (c->maxw && c->minw && |
262 || (c->maxw && c->minw && |
272 c->maxw == c->minw && c->maxh == c->minh); |
263 c->maxw == c->minw && c->maxh == c->minh); |
273 settitle(c); |
264 settitle(c); |
274 arrange(NULL); |
265 |
275 |
266 XMapWindow(dpy, c->win); |
276 /* mapping the window now prevents flicker */ |
267 XMapWindow(dpy, c->title); |
277 XMapRaised(dpy, c->win); |
|
278 XMapRaised(dpy, c->title); |
|
279 if(isvisible(c)) |
268 if(isvisible(c)) |
280 focus(c); |
269 focus(c); |
|
270 arrange(NULL); |
281 } |
271 } |
282 |
272 |
283 void |
273 void |
284 resize(Client *c, Bool sizehints, Corner sticky) |
274 resize(Client *c, Bool sizehints, Corner sticky) |
285 { |
275 { |
408 sel->x = sx; |
398 sel->x = sx; |
409 sel->y = sy + bh; |
399 sel->y = sy + bh; |
410 sel->w = sw - 2; |
400 sel->w = sw - 2; |
411 sel->h = sh - 2 - bh; |
401 sel->h = sh - 2 - bh; |
412 |
402 |
413 higher(sel); |
403 restack(); |
414 resize(sel, arrange == dofloat, TopLeft); |
404 resize(sel, arrange == dofloat, TopLeft); |
415 |
405 |
416 sel->x = ox; |
406 sel->x = ox; |
417 sel->y = oy; |
407 sel->y = oy; |
418 sel->w = ow; |
408 sel->w = ow; |
444 free(c); |
434 free(c); |
445 |
435 |
446 XSync(dpy, False); |
436 XSync(dpy, False); |
447 XSetErrorHandler(xerror); |
437 XSetErrorHandler(xerror); |
448 XUngrabServer(dpy); |
438 XUngrabServer(dpy); |
449 arrange(NULL); |
|
450 if(sel) |
439 if(sel) |
451 focus(sel); |
440 focus(sel); |
|
441 arrange(NULL); |
452 } |
442 } |
453 |
443 |
454 void |
444 void |
455 zoom(Arg *arg) |
445 zoom(Arg *arg) |
456 { |
446 { |
472 sel->next->prev = sel->prev; |
462 sel->next->prev = sel->prev; |
473 sel->prev = NULL; |
463 sel->prev = NULL; |
474 clients->prev = sel; |
464 clients->prev = sel; |
475 sel->next = clients; |
465 sel->next = clients; |
476 clients = sel; |
466 clients = sel; |
|
467 focus(sel); |
477 arrange(NULL); |
468 arrange(NULL); |
478 focus(sel); |
469 } |
479 } |
|