equal
deleted
inserted
replaced
295 XSync(dpy, False); |
295 XSync(dpy, False); |
296 } |
296 } |
297 } |
297 } |
298 |
298 |
299 void |
299 void |
300 togglefloating(const char *arg) { |
|
301 if(!sel || isfloating()) |
|
302 return; |
|
303 sel->isfloating = !sel->isfloating; |
|
304 if(sel->isfloating) |
|
305 resize(sel, sel->x, sel->y, sel->w, sel->h, True); |
|
306 arrange(); |
|
307 } |
|
308 |
|
309 void |
|
310 unban(Client *c) { |
300 unban(Client *c) { |
311 if(!c->isbanned) |
301 if(!c->isbanned) |
312 return; |
302 return; |
313 XMapWindow(dpy, c->win); |
303 XMapWindow(dpy, c->win); |
314 setclientstate(c, NormalState); |
304 setclientstate(c, NormalState); |
315 c->isbanned = False; |
305 c->isbanned = False; |
316 } |
306 } |
317 |
307 |
318 void |
308 void |
319 unmanage(Client *c) { |
309 unmanage(Client *c, long state) { |
320 XWindowChanges wc; |
310 XWindowChanges wc; |
321 |
311 |
322 wc.border_width = c->oldborder; |
312 wc.border_width = c->oldborder; |
323 /* The server grab construct avoids race conditions. */ |
313 /* The server grab construct avoids race conditions. */ |
324 XGrabServer(dpy); |
314 XGrabServer(dpy); |
327 detach(c); |
317 detach(c); |
328 detachstack(c); |
318 detachstack(c); |
329 if(sel == c) |
319 if(sel == c) |
330 focus(NULL); |
320 focus(NULL); |
331 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
321 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
332 setclientstate(c, WithdrawnState); |
322 setclientstate(c, state); |
333 free(c->tags); |
323 free(c->tags); |
334 free(c); |
324 free(c); |
335 XSync(dpy, False); |
325 XSync(dpy, False); |
336 XSetErrorHandler(xerror); |
326 XSetErrorHandler(xerror); |
337 XUngrabServer(dpy); |
327 XUngrabServer(dpy); |