tag.c
changeset 261 d6fd632d861c
parent 240 87c5d5176e17
child 262 d659a2dce2b5
equal deleted inserted replaced
260:243bf6783c7c 261:d6fd632d861c
    49 {
    49 {
    50 	Client *c;
    50 	Client *c;
    51 
    51 
    52 	for(c = clients; c; c = c->next) {
    52 	for(c = clients; c; c = c->next) {
    53 		c->ismax = False;
    53 		c->ismax = False;
    54 		if(c->tags[tsel]) {
    54 		if(isvisible(c)) {
    55 			resize(c, True, TopLeft);
    55 			resize(c, True, TopLeft);
    56 		}
    56 		}
    57 		else
    57 		else
    58 			ban(c);
    58 			ban(c);
    59 	}
    59 	}
    72 	int n, i, w, h;
    72 	int n, i, w, h;
    73 	Client *c;
    73 	Client *c;
    74 
    74 
    75 	w = sw - mw;
    75 	w = sw - mw;
    76 	for(n = 0, c = clients; c; c = c->next)
    76 	for(n = 0, c = clients; c; c = c->next)
    77 		if(c->tags[tsel] && !c->isfloat)
    77 		if(isvisible(c) && !c->isfloat)
    78 			n++;
    78 			n++;
    79 
    79 
    80 	if(n > 1)
    80 	if(n > 1)
    81 		h = (sh - bh) / (n - 1);
    81 		h = (sh - bh) / (n - 1);
    82 	else
    82 	else
    83 		h = sh - bh;
    83 		h = sh - bh;
    84 
    84 
    85 	for(i = 0, c = clients; c; c = c->next) {
    85 	for(i = 0, c = clients; c; c = c->next) {
    86 		c->ismax = False;
    86 		c->ismax = False;
    87 		if(c->tags[tsel]) {
    87 		if(isvisible(c)) {
    88 			if(c->isfloat) {
    88 			if(c->isfloat) {
    89 				higher(c);
    89 				higher(c);
    90 				resize(c, True, TopLeft);
    90 				resize(c, True, TopLeft);
    91 				continue;
    91 				continue;
    92 			}
    92 			}
   133 }
   133 }
   134 
   134 
   135 Client *
   135 Client *
   136 getnext(Client *c)
   136 getnext(Client *c)
   137 {
   137 {
   138 	for(; c && !c->tags[tsel]; c = c->next);
   138 	for(; c && !isvisible(c); c = c->next);
   139 	return c;
   139 	return c;
   140 }
   140 }
   141 
   141 
   142 Client *
   142 Client *
   143 getprev(Client *c)
   143 getprev(Client *c)
   144 {
   144 {
   145 	for(; c && !c->tags[tsel]; c = c->prev);
   145 	for(; c && !isvisible(c); c = c->prev);
   146 	return c;
   146 	return c;
   147 }
   147 }
   148 
   148 
   149 void
   149 void
   150 initrregs()
   150 initrregs()
   171 				free(reg);
   171 				free(reg);
   172 			else
   172 			else
   173 				rreg[i].tregex = reg;
   173 				rreg[i].tregex = reg;
   174 		}
   174 		}
   175 	}
   175 	}
       
   176 }
       
   177 
       
   178 Bool
       
   179 isvisible(Client *c)
       
   180 {
       
   181 	unsigned int i;
       
   182 
       
   183 	for(i = 0; i < ntags; i++)
       
   184 		if(c->tags[i] && tsel[i])
       
   185 			return True;
       
   186 	return False;
   176 }
   187 }
   177 
   188 
   178 void
   189 void
   179 replacetag(Arg *arg)
   190 replacetag(Arg *arg)
   180 {
   191 {
   215 			XFree(ch.res_class);
   226 			XFree(ch.res_class);
   216 		if(ch.res_name)
   227 		if(ch.res_name)
   217 			XFree(ch.res_name);
   228 			XFree(ch.res_name);
   218 	}
   229 	}
   219 	if(!matched)
   230 	if(!matched)
   220 		c->tags[tsel] = True;
   231 		for(i = 0; i < ntags; i++)
       
   232 			c->tags[i] = tsel[i];
   221 }
   233 }
   222 
   234 
   223 void
   235 void
   224 togglemode(Arg *arg)
   236 togglemode(Arg *arg)
   225 {
   237 {
   228 }
   240 }
   229 
   241 
   230 void
   242 void
   231 view(Arg *arg)
   243 view(Arg *arg)
   232 {
   244 {
   233 	tsel = arg->i;
   245 	unsigned int i;
       
   246 
       
   247 	for(i = 0; i < ntags; i++)
       
   248 		tsel[i] = False;
       
   249 	tsel[arg->i] = True;
   234 	arrange(NULL);
   250 	arrange(NULL);
   235 	drawall();
   251 	drawall();
   236 }
   252 }
   237 
   253 
   238 void
   254 void
   239 viewnext(Arg *arg)
   255 viewnext(Arg *arg)
   240 {
   256 {
   241 	arg->i = (tsel < ntags-1) ? tsel+1 : 0;
   257 	unsigned int i;
       
   258 
       
   259 	for(i = 0; !tsel[i]; i++);
       
   260 	arg->i = (i < ntags-1) ? i+1 : 0;
   242 	view(arg);
   261 	view(arg);
   243 }
   262 }
   244 
   263 
   245 void
   264 void
   246 viewprev(Arg *arg)
   265 viewprev(Arg *arg)
   247 {
   266 {
   248 	arg->i = (tsel > 0) ? tsel-1 : ntags-1;
   267 	unsigned int i;
       
   268 
       
   269 	for(i = 0; !tsel[i]; i++);
       
   270 	arg->i = (i > 0) ? i-1 : ntags-1;
   249 	view(arg);
   271 	view(arg);
   250 }
   272 }