X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=dwm.c;h=e7804dc389796f195c306db8ef96e32acbc3ae36;hb=9a4d07d9de31c7bf3fba83c66d1a09d63848adfc;hp=7faad2216f6ed82e8ec2301362ebdcaa0a1ee9b1;hpb=73ec124ae94a699e74212cc1a2e21b30f9d4ad7c;p=dwm.git diff --git a/dwm.c b/dwm.c index 7faad22..e7804dc 100644 --- a/dwm.c +++ b/dwm.c @@ -233,7 +233,7 @@ static Client *sel = NULL; static Client *stack = NULL; static Cursor cursor[CurLast]; static Display *dpy; -static DC dc = {0}; +static DC dc; static Layout *lt[] = { NULL, NULL }; static Window root, barwin; /* configuration, allows nested code to access above variables */ @@ -250,20 +250,21 @@ applyrules(Client *c) { XClassHint ch = { 0 }; /* rule matching */ - XGetClassHint(dpy, c->win, &ch); - for(i = 0; i < LENGTH(rules); i++) { - r = &rules[i]; - if((!r->title || strstr(c->name, r->title)) - && (!r->class || (ch.res_class && strstr(ch.res_class, r->class))) - && (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) { - c->isfloating = r->isfloating; - c->tags |= r->tags & TAGMASK; + if(XGetClassHint(dpy, c->win, &ch)) { + for(i = 0; i < LENGTH(rules); i++) { + r = &rules[i]; + if((!r->title || strstr(c->name, r->title)) + && (!r->class || (ch.res_class && strstr(ch.res_class, r->class))) + && (!r->instance || (ch.res_name && strstr(ch.res_name, r->instance)))) { + c->isfloating = r->isfloating; + c->tags |= r->tags & TAGMASK; + } } + if(ch.res_class) + XFree(ch.res_class); + if(ch.res_name) + XFree(ch.res_name); } - if(ch.res_class) - XFree(ch.res_class); - if(ch.res_name) - XFree(ch.res_name); if(!c->tags) c->tags = tagset[seltags]; } @@ -330,21 +331,20 @@ buttonpress(XEvent *e) { for(i = 0; i < LENGTH(buttons); i++) if(click == buttons[i].click && buttons[i].func && buttons[i].button == ev->button && CLEANMASK(buttons[i].mask) == CLEANMASK(ev->state)) - buttons[i].func(click == ClkTagBar ? &arg : &buttons[i].arg); + buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg); } void checkotherwm(void) { otherwm = False; - XSetErrorHandler(xerrorstart); + xerrorxlib = XSetErrorHandler(xerrorstart); /* this causes an error if some other window manager is running */ XSelectInput(dpy, DefaultRootWindow(dpy), SubstructureRedirectMask); XSync(dpy, False); if(otherwm) die("dwm: another window manager is already running\n"); - XSetErrorHandler(NULL); - xerrorxlib = XSetErrorHandler(xerror); + XSetErrorHandler(xerror); XSync(dpy, False); } @@ -762,10 +762,10 @@ grabkeys(void) { XUngrabKey(dpy, AnyKey, AnyModifier, root); for(i = 0; i < LENGTH(keys); i++) { - code = XKeysymToKeycode(dpy, keys[i].keysym); - for(j = 0; j < LENGTH(modifiers); j++) - XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, True, - GrabModeAsync, GrabModeAsync); + if((code = XKeysymToKeycode(dpy, keys[i].keysym))) + for(j = 0; j < LENGTH(modifiers); j++) + XGrabKey(dpy, code, keys[i].mod | modifiers[j], root, + True, GrabModeAsync, GrabModeAsync); } } } @@ -796,9 +796,6 @@ initfont(const char *fontstr) { } } else { - if(dc.font.xfont) - XFreeFont(dpy, dc.font.xfont); - dc.font.xfont = NULL; if(!(dc.font.xfont = XLoadQueryFont(dpy, fontstr)) && !(dc.font.xfont = XLoadQueryFont(dpy, "fixed"))) die("error, cannot load font: '%s'\n", fontstr); @@ -1058,9 +1055,9 @@ resize(Client *c, int x, int y, int w, int h, Bool sizehints) { /* adjust for aspect limits */ if(c->mina > 0 && c->maxa > 0) { - if(c->maxa < (float)(w / h)) + if(c->maxa < (float)w / h) w = h * c->maxa; - else if(c->mina < (float)(h / w)) + else if(c->mina < (float)h / w) h = w * c->mina; } @@ -1627,7 +1624,7 @@ updatesizehints(Client *c) { else c->maxa = c->mina = 0.0; c->isfixed = (c->maxw && c->minw && c->maxh && c->minh - && c->maxw == c->minw && c->maxh == c->minh); + && c->maxw == c->minw && c->maxh == c->minh); } void