Mercurial > dwm-meillo
comparison client.c @ 151:e1859517e3a6
removed artefacts of single-linked list (thanx to Jukka, I must have been mad)
author | arg@10ksloc.org |
---|---|
date | Tue, 01 Aug 2006 16:14:17 +0200 |
parents | 5267e1204367 |
children | 93012e947eae |
comparison
equal
deleted
inserted
replaced
150:a26b32ff8911 | 151:e1859517e3a6 |
---|---|
414 } | 414 } |
415 | 415 |
416 void | 416 void |
417 unmanage(Client *c) | 417 unmanage(Client *c) |
418 { | 418 { |
419 Client **l; | |
420 | |
421 XGrabServer(dpy); | 419 XGrabServer(dpy); |
422 XSetErrorHandler(xerrordummy); | 420 XSetErrorHandler(xerrordummy); |
423 | 421 |
424 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 422 XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
425 XDestroyWindow(dpy, c->title); | 423 XDestroyWindow(dpy, c->title); |
426 | 424 |
427 for(l = &clients; *l && *l != c; l = &(*l)->next); | |
428 if(c->prev) | 425 if(c->prev) |
429 c->prev->next = c->next; | 426 c->prev->next = c->next; |
430 if(c->next) | 427 if(c->next) |
431 c->next->prev = c->prev; | 428 c->next->prev = c->prev; |
432 *l = c->next; | 429 if(c == clients) |
430 clients = c->next; | |
433 if(sel == c) { | 431 if(sel == c) { |
434 sel = getnext(c->next); | 432 sel = getnext(c->next); |
435 if(!sel) | 433 if(!sel) |
436 sel = getprev(c->prev); | 434 sel = getprev(c->prev); |
437 if(!sel) | 435 if(!sel) |
448 } | 446 } |
449 | 447 |
450 void | 448 void |
451 zoom(Arg *arg) | 449 zoom(Arg *arg) |
452 { | 450 { |
453 Client *c, **l; | 451 Client *c; |
454 | 452 |
455 if(!sel) | 453 if(!sel) |
456 return; | 454 return; |
457 | 455 |
458 if(sel == getnext(clients) && sel->next) { | 456 if(sel == getnext(clients) && sel->next) { |
459 if((c = getnext(sel->next))) | 457 if((c = getnext(sel->next))) |
460 sel = c; | 458 sel = c; |
461 } | 459 } |
462 | 460 |
463 /* pop */ | 461 /* pop */ |
464 for(l = &clients; *l && *l != sel; l = &(*l)->next); | |
465 if(sel->prev) | 462 if(sel->prev) |
466 sel->prev->next = sel->next; | 463 sel->prev->next = sel->next; |
467 if(sel->next) | 464 if(sel->next) |
468 sel->next->prev = sel->prev; | 465 sel->next->prev = sel->prev; |
469 *l = sel->next; | |
470 | |
471 sel->prev = NULL; | 466 sel->prev = NULL; |
472 if(clients) | 467 if(clients) |
473 clients->prev = sel; | 468 clients->prev = sel; |
474 sel->next = clients; | 469 sel->next = clients; |
475 clients = sel; | 470 clients = sel; |