some cleanup, removed ntags variable, defined NTAGS macro, simplified tag(), view() and idxoftag(), fixed some NULL comparisions

This commit is contained in:
arg@suckless.org 2007-10-24 16:07:43 +02:00
parent 7b65b763bc
commit 29f2b15ddc
1 changed files with 20 additions and 27 deletions

47
dwm.c
View File

@ -232,10 +232,9 @@ Regs *regs = NULL;
/* configuration, allows nested code to access above variables */ /* configuration, allows nested code to access above variables */
#include "config.h" #include "config.h"
/* statically define the number of tags. */ #define NTAGS (sizeof tags / sizeof tags[0])
unsigned int ntags = sizeof tags / sizeof tags[0]; Bool seltags[NTAGS] = {[0] = True};
Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True}; Bool prevtags[NTAGS] = {[0] = True};
Bool prevtags[sizeof tags / sizeof tags[0]] = {[0] = True};
/* function implementations */ /* function implementations */
void void
@ -254,7 +253,7 @@ applyrules(Client *c) {
for(i = 0; i < nrules; i++) for(i = 0; i < nrules; i++)
if(regs[i].propregex && !regexec(regs[i].propregex, buf, 1, &tmp, 0)) { if(regs[i].propregex && !regexec(regs[i].propregex, buf, 1, &tmp, 0)) {
c->isfloating = rules[i].isfloating; c->isfloating = rules[i].isfloating;
for(j = 0; regs[i].tagregex && j < ntags; j++) { for(j = 0; regs[i].tagregex && j < NTAGS; j++) {
if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) { if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
matched = True; matched = True;
c->tags[j] = True; c->tags[j] = True;
@ -313,7 +312,7 @@ buttonpress(XEvent *e) {
if(barwin == ev->window) { if(barwin == ev->window) {
x = 0; x = 0;
for(i = 0; i < ntags; i++) { for(i = 0; i < NTAGS; i++) {
x += textw(tags[i]); x += textw(tags[i]);
if(ev->x < x) { if(ev->x < x) {
if(ev->button == Button1) { if(ev->button == Button1) {
@ -537,7 +536,7 @@ drawbar(void) {
int i, x; int i, x;
dc.x = dc.y = 0; dc.x = dc.y = 0;
for(i = 0; i < ntags; i++) { for(i = 0; i < NTAGS; i++) {
dc.w = textw(tags[i]); dc.w = textw(tags[i]);
if(seltags[i]) { if(seltags[i]) {
drawtext(tags[i], dc.sel); drawtext(tags[i], dc.sel);
@ -847,10 +846,8 @@ unsigned int
idxoftag(const char *tag) { idxoftag(const char *tag) {
unsigned int i; unsigned int i;
for(i = 0; i < ntags; i++) for(i = 0; (i < NTAGS) && (tags[i] != tag); i++);
if(tags[i] == tag) return (i < NTAGS) ? i : 0;
return i;
return 0;
} }
void void
@ -930,7 +927,7 @@ Bool
isvisible(Client *c) { isvisible(Client *c) {
unsigned int i; unsigned int i;
for(i = 0; i < ntags; i++) for(i = 0; i < NTAGS; i++)
if(c->tags[i] && seltags[i]) if(c->tags[i] && seltags[i])
return True; return True;
return False; return False;
@ -1140,7 +1137,7 @@ propertynotify(XEvent *e) {
default: break; default: break;
case XA_WM_TRANSIENT_FOR: case XA_WM_TRANSIENT_FOR:
XGetTransientForHint(dpy, c->win, &trans); XGetTransientForHint(dpy, c->win, &trans);
if(!c->isfloating && (c->isfloating = (getclient(trans) != NULL))) if(!c->isfloating && (c->isfloating = (NULL != getclient(trans))))
arrange(); arrange();
break; break;
case XA_WM_NORMAL_HINTS: case XA_WM_NORMAL_HINTS:
@ -1542,11 +1539,9 @@ tag(const char *arg) {
if(!sel) if(!sel)
return; return;
for(i = 0; i < ntags; i++) for(i = 0; i < NTAGS; i++)
sel->tags[i] = arg == NULL; sel->tags[i] = (NULL == arg);
i = idxoftag(arg); sel->tags[idxoftag(arg)] = True;
if(i >= 0 && i < ntags)
sel->tags[i] = True;
arrange(); arrange();
} }
@ -1662,9 +1657,9 @@ toggletag(const char *arg) {
return; return;
i = idxoftag(arg); i = idxoftag(arg);
sel->tags[i] = !sel->tags[i]; sel->tags[i] = !sel->tags[i];
for(j = 0; j < ntags && !sel->tags[j]; j++); for(j = 0; j < NTAGS && !sel->tags[j]; j++);
if(j == ntags) if(j == NTAGS)
sel->tags[i] = True; sel->tags[i] = True; /* at least one tag must be enabled */
arrange(); arrange();
} }
@ -1674,8 +1669,8 @@ toggleview(const char *arg) {
i = idxoftag(arg); i = idxoftag(arg);
seltags[i] = !seltags[i]; seltags[i] = !seltags[i];
for(j = 0; j < ntags && !seltags[j]; j++); for(j = 0; j < NTAGS && !seltags[j]; j++);
if(j == ntags) if(j == NTAGS)
seltags[i] = True; /* at least one tag must be viewed */ seltags[i] = True; /* at least one tag must be viewed */
arrange(); arrange();
} }
@ -1841,11 +1836,9 @@ view(const char *arg) {
unsigned int i; unsigned int i;
memcpy(prevtags, seltags, sizeof seltags); memcpy(prevtags, seltags, sizeof seltags);
for(i = 0; i < ntags; i++) for(i = 0; i < NTAGS; i++)
seltags[i] = arg == NULL; seltags[i] = arg == NULL;
i = idxoftag(arg); seltags[idxoftag(arg)] = True;
if(i >= 0 && i < ntags)
seltags[i] = True;
arrange(); arrange();
} }