annotate screen.c @ 73:c2ddb9dbbd10

rearranged
author Anselm R. Garbe <garbeam@wmii.de>
date Fri, 14 Jul 2006 22:33:38 +0200
parents
children 5370ef170cc9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
1 /*
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
3 * See LICENSE file for license details.
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
4 */
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
5
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
6 #include "dwm.h"
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
7
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
8 void (*arrange)(Arg *) = tiling;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
9
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
10 void
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
11 view(Arg *arg)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
12 {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
13 Client *c;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
14
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
15 tsel = arg->i;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
16 arrange(NULL);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
17
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
18 for(c = clients; c; c = next(c->next))
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
19 draw_client(c);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
20 draw_bar();
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
21 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
22
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
23 void
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
24 floating(Arg *arg)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
25 {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
26 Client *c;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
27
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
28 arrange = floating;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
29 for(c = clients; c; c = c->next) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
30 if(c->tags[tsel])
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
31 resize(c, True);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
32 else
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
33 ban_client(c);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
34 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
35 if(sel && !sel->tags[tsel]) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
36 if((sel = next(clients))) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
37 craise(sel);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
38 focus(sel);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
39 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
40 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
41 draw_bar();
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
42 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
43
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
44 void
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
45 tiling(Arg *arg)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
46 {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
47 Client *c;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
48 int n, i, w, h;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
49
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
50 w = sw - mw;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
51 arrange = tiling;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
52 for(n = 0, c = clients; c; c = c->next)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
53 if(c->tags[tsel] && !c->floating)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
54 n++;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
55
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
56 if(n > 1)
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
57 h = (sh - bh) / (n - 1);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
58 else
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
59 h = sh - bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
60
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
61 for(i = 0, c = clients; c; c = c->next) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
62 if(c->tags[tsel]) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
63 if(c->floating) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
64 craise(c);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
65 resize(c, True);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
66 continue;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
67 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
68 if(n == 1) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
69 c->x = sx;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
70 c->y = sy + bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
71 c->w = sw - 2 * c->border;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
72 c->h = sh - 2 * c->border - bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
73 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
74 else if(i == 0) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
75 c->x = sx;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
76 c->y = sy + bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
77 c->w = mw - 2 * c->border;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
78 c->h = sh - 2 * c->border - bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
79 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
80 else {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
81 c->x = sx + mw;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
82 c->y = sy + (i - 1) * h + bh;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
83 c->w = w - 2 * c->border;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
84 c->h = h - 2 * c->border;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
85 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
86 resize(c, False);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
87 i++;
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
88 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
89 else
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
90 ban_client(c);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
91 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
92 if(!sel || (sel && !sel->tags[tsel])) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
93 if((sel = next(clients))) {
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
94 craise(sel);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
95 focus(sel);
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
96 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
97 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
98 draw_bar();
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
99 }
c2ddb9dbbd10 rearranged
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
100