dwm-meillo

diff tag.c @ 327:96d09fd98e89

separated several functions into view.c
author Anselm R. Garbe <arg@10kloc.org>
date Tue, 22 Aug 2006 16:50:21 +0200
parents ec8a66a2b9cc
children 2a65e8b3d21a
line diff
     1.1 --- a/tag.c	Tue Aug 22 16:42:29 2006 +0200
     1.2 +++ b/tag.c	Tue Aug 22 16:50:21 2006 +0200
     1.3 @@ -30,97 +30,8 @@
     1.4  static RReg *rreg = NULL;
     1.5  static unsigned int len = 0;
     1.6  
     1.7 -void (*arrange)(Arg *) = DEFMODE;
     1.8 -
     1.9  /* extern */
    1.10  
    1.11 -void
    1.12 -dofloat(Arg *arg)
    1.13 -{
    1.14 -	Client *c;
    1.15 -
    1.16 -	for(c = clients; c; c = c->next) {
    1.17 -		c->ismax = False;
    1.18 -		if(isvisible(c)) {
    1.19 -			resize(c, True, TopLeft);
    1.20 -		}
    1.21 -		else
    1.22 -			ban(c);
    1.23 -	}
    1.24 -	if(!sel || !isvisible(sel))
    1.25 -		sel = getnext(clients);
    1.26 -	if(sel)
    1.27 -		focus(sel);
    1.28 -	else
    1.29 -		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    1.30 -	restack();
    1.31 -}
    1.32 -
    1.33 -void
    1.34 -dotile(Arg *arg)
    1.35 -{
    1.36 -	int h, i, n, w;
    1.37 -	Client *c;
    1.38 -
    1.39 -	w = sw - mw;
    1.40 -	for(n = 0, c = clients; c; c = c->next)
    1.41 -		if(isvisible(c) && !c->isfloat)
    1.42 -			n++;
    1.43 -
    1.44 -	if(n > 1)
    1.45 -		h = (sh - bh) / (n - 1);
    1.46 -	else
    1.47 -		h = sh - bh;
    1.48 -
    1.49 -	for(i = 0, c = clients; c; c = c->next) {
    1.50 -		c->ismax = False;
    1.51 -		if(isvisible(c)) {
    1.52 -			if(c->isfloat) {
    1.53 -				resize(c, True, TopLeft);
    1.54 -				continue;
    1.55 -			}
    1.56 -			if(n == 1) {
    1.57 -				c->x = sx;
    1.58 -				c->y = sy + bh;
    1.59 -				c->w = sw - 2;
    1.60 -				c->h = sh - 2 - bh;
    1.61 -			}
    1.62 -			else if(i == 0) {
    1.63 -				c->x = sx;
    1.64 -				c->y = sy + bh;
    1.65 -				c->w = mw - 2;
    1.66 -				c->h = sh - 2 - bh;
    1.67 -			}
    1.68 -			else if(h > bh) {
    1.69 -				c->x = sx + mw;
    1.70 -				c->y = sy + (i - 1) * h + bh;
    1.71 -				c->w = w - 2;
    1.72 -				if(i + 1 == n)
    1.73 -					c->h = sh - c->y - 2;
    1.74 -				else
    1.75 -					c->h = h - 2;
    1.76 -			}
    1.77 -			else { /* fallback if h < bh */
    1.78 -				c->x = sx + mw;
    1.79 -				c->y = sy + bh;
    1.80 -				c->w = w - 2;
    1.81 -				c->h = sh - 2 - bh;
    1.82 -			}
    1.83 -			resize(c, False, TopLeft);
    1.84 -			i++;
    1.85 -		}
    1.86 -		else
    1.87 -			ban(c);
    1.88 -	}
    1.89 -	if(!sel || !isvisible(sel))
    1.90 -		sel = getnext(clients);
    1.91 -	if(sel)
    1.92 -		focus(sel);
    1.93 -	else
    1.94 -		XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
    1.95 -	restack();
    1.96 -}
    1.97 -
    1.98  Client *
    1.99  getnext(Client *c)
   1.100  {
   1.101 @@ -164,69 +75,6 @@
   1.102  	}
   1.103  }
   1.104  
   1.105 -Bool
   1.106 -isvisible(Client *c)
   1.107 -{
   1.108 -	unsigned int i;
   1.109 -
   1.110 -	for(i = 0; i < ntags; i++)
   1.111 -		if(c->tags[i] && seltag[i])
   1.112 -			return True;
   1.113 -	return False;
   1.114 -}
   1.115 -
   1.116 -void
   1.117 -restack()
   1.118 -{
   1.119 -	static unsigned int nwins = 0;
   1.120 -	static Window *wins = NULL;
   1.121 -	unsigned int f, fi, m, mi, n;
   1.122 -	Client *c;
   1.123 -	XEvent ev;
   1.124 -
   1.125 -	for(f = 0, m = 0, c = clients; c; c = c->next)
   1.126 -		if(isvisible(c)) {
   1.127 -			if(c->isfloat || arrange == dofloat)
   1.128 -				f++;
   1.129 -			else
   1.130 -				m++;
   1.131 -		}
   1.132 -	if(!(n = 2 * (f + m))) {
   1.133 -		drawstatus();
   1.134 -		return;
   1.135 -	}
   1.136 -	if(nwins < n) {
   1.137 -		nwins = n;
   1.138 -		wins = erealloc(wins, nwins * sizeof(Window));
   1.139 -	}
   1.140 -
   1.141 -	fi = 0;
   1.142 -	mi = 2 * f;
   1.143 -	if(sel->isfloat || arrange == dofloat) {
   1.144 -		wins[fi++] = sel->title;
   1.145 -		wins[fi++] = sel->win;
   1.146 -	}
   1.147 -	else {
   1.148 -		wins[mi++] = sel->title;
   1.149 -		wins[mi++] = sel->win;
   1.150 -	}
   1.151 -	for(c = clients; c; c = c->next)
   1.152 -		if(isvisible(c) && c != sel) {
   1.153 -			if(c->isfloat || arrange == dofloat) {
   1.154 -				wins[fi++] = c->title;
   1.155 -				wins[fi++] = c->win;
   1.156 -			}
   1.157 -			else {
   1.158 -				wins[mi++] = c->title;
   1.159 -				wins[mi++] = c->win;
   1.160 -			}
   1.161 -		}
   1.162 -	XRestackWindows(dpy, wins, n);
   1.163 -	drawall();
   1.164 -	XSync(dpy, False);
   1.165 -	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
   1.166 -}
   1.167 -
   1.168  void
   1.169  settags(Client *c)
   1.170  {
   1.171 @@ -277,16 +125,6 @@
   1.172  }
   1.173  
   1.174  void
   1.175 -togglemode(Arg *arg)
   1.176 -{
   1.177 -	arrange = arrange == dofloat ? dotile : dofloat;
   1.178 -	if(sel)
   1.179 -		arrange(NULL);
   1.180 -	else
   1.181 -		drawstatus();
   1.182 -}
   1.183 -
   1.184 -void
   1.185  toggletag(Arg *arg)
   1.186  {
   1.187  	unsigned int i;
   1.188 @@ -302,27 +140,3 @@
   1.189  	if(!isvisible(sel))
   1.190  		arrange(NULL);
   1.191  }
   1.192 -
   1.193 -
   1.194 -void
   1.195 -toggleview(Arg *arg)
   1.196 -{
   1.197 -	unsigned int i;
   1.198 -
   1.199 -	seltag[arg->i] = !seltag[arg->i];
   1.200 -	for(i = 0; i < ntags && !seltag[i]; i++);
   1.201 -	if(i == ntags)
   1.202 -		seltag[arg->i] = True; /* cannot toggle last view */
   1.203 -	arrange(NULL);
   1.204 -}
   1.205 -
   1.206 -void
   1.207 -view(Arg *arg)
   1.208 -{
   1.209 -	unsigned int i;
   1.210 -
   1.211 -	for(i = 0; i < ntags; i++)
   1.212 -		seltag[i] = False;
   1.213 -	seltag[arg->i] = True;
   1.214 -	arrange(NULL);
   1.215 -}