|
|
@ -595,7 +595,7 @@ drawtext(const char *text, unsigned long col[ColLast], Bool invert) { |
|
|
|
x = dc.x + (h / 2); |
|
|
|
x = dc.x + (h / 2); |
|
|
|
/* shorten text if necessary */ |
|
|
|
/* shorten text if necessary */ |
|
|
|
for(; len && (w = textnw(buf, len)) > dc.w - h; len--); |
|
|
|
for(; len && (w = textnw(buf, len)) > dc.w - h; len--); |
|
|
|
if (!len) |
|
|
|
if(!len) |
|
|
|
return; |
|
|
|
return; |
|
|
|
if(len < olen) { |
|
|
|
if(len < olen) { |
|
|
|
if(len > 1) |
|
|
|
if(len > 1) |
|
|
@ -782,21 +782,21 @@ grabbuttons(Client *c, Bool focused) { |
|
|
|
int i, j; |
|
|
|
int i, j; |
|
|
|
unsigned int buttons[] = { Button1, Button2, Button3 }; |
|
|
|
unsigned int buttons[] = { Button1, Button2, Button3 }; |
|
|
|
unsigned int modifiers[] = { MODKEY, MODKEY|LockMask, MODKEY|numlockmask, |
|
|
|
unsigned int modifiers[] = { MODKEY, MODKEY|LockMask, MODKEY|numlockmask, |
|
|
|
MODKEY|numlockmask|LockMask} ; |
|
|
|
MODKEY|numlockmask|LockMask} ; |
|
|
|
|
|
|
|
|
|
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
|
|
|
if(focused) |
|
|
|
if(focused) |
|
|
|
for(i = 0; i < LENGTH(buttons); i++) |
|
|
|
for(i = 0; i < LENGTH(buttons); i++) |
|
|
|
for(j = 0; j < LENGTH(modifiers); j++) |
|
|
|
for(j = 0; j < LENGTH(modifiers); j++) |
|
|
|
XGrabButton(dpy, buttons[i], modifiers[j], c->win, False, |
|
|
|
XGrabButton(dpy, buttons[i], modifiers[j], c->win, False, |
|
|
|
BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
|
|
|
BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
|
|
|
else |
|
|
|
else |
|
|
|
XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
|
|
|
XGrabButton(dpy, AnyButton, AnyModifier, c->win, False, |
|
|
|
BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
|
|
|
BUTTONMASK, GrabModeAsync, GrabModeSync, None, None); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
grabkeys(void) { |
|
|
|
grabkeys(void) { |
|
|
|
unsigned int i, j; |
|
|
|
unsigned int i, j; |
|
|
|
KeyCode code; |
|
|
|
KeyCode code; |
|
|
|
XModifierKeymap *modmap; |
|
|
|
XModifierKeymap *modmap; |
|
|
@ -1041,7 +1041,7 @@ monocle(void) { |
|
|
|
Client *c; |
|
|
|
Client *c; |
|
|
|
|
|
|
|
|
|
|
|
for(c = clients; c; c = c->next) |
|
|
|
for(c = clients; c; c = c->next) |
|
|
|
if((lt->isfloating || !c->isfloating) && isvisible(c, NULL)) |
|
|
|
if((lt->isfloating || !c->isfloating) && isvisible(c, NULL)) |
|
|
|
resize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw, RESIZEHINTS); |
|
|
|
resize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw, RESIZEHINTS); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1055,7 +1055,7 @@ movemouse(Client *c) { |
|
|
|
ocx = nx = c->x; |
|
|
|
ocx = nx = c->x; |
|
|
|
ocy = ny = c->y; |
|
|
|
ocy = ny = c->y; |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
|
None, cursor[CurMove], CurrentTime) != GrabSuccess) |
|
|
|
return; |
|
|
|
return; |
|
|
|
XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); |
|
|
|
XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui); |
|
|
|
for(;;) { |
|
|
|
for(;;) { |
|
|
@ -1221,7 +1221,7 @@ resizemouse(Client *c) { |
|
|
|
ocx = c->x; |
|
|
|
ocx = c->x; |
|
|
|
ocy = c->y; |
|
|
|
ocy = c->y; |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync, |
|
|
|
None, cursor[CurResize], CurrentTime) != GrabSuccess) |
|
|
|
None, cursor[CurResize], CurrentTime) != GrabSuccess) |
|
|
|
return; |
|
|
|
return; |
|
|
|
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); |
|
|
|
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->bw - 1, c->h + c->bw - 1); |
|
|
|
for(;;) { |
|
|
|
for(;;) { |
|
|
@ -1351,7 +1351,7 @@ scan(void) { |
|
|
|
if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { |
|
|
|
if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) { |
|
|
|
for(i = 0; i < num; i++) { |
|
|
|
for(i = 0; i < num; i++) { |
|
|
|
if(!XGetWindowAttributes(dpy, wins[i], &wa) |
|
|
|
if(!XGetWindowAttributes(dpy, wins[i], &wa) |
|
|
|
|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) |
|
|
|
|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1)) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState) |
|
|
|
if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState) |
|
|
|
manage(wins[i], &wa); |
|
|
|
manage(wins[i], &wa); |
|
|
@ -1360,7 +1360,7 @@ scan(void) { |
|
|
|
if(!XGetWindowAttributes(dpy, wins[i], &wa)) |
|
|
|
if(!XGetWindowAttributes(dpy, wins[i], &wa)) |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
if(XGetTransientForHint(dpy, wins[i], &d1) |
|
|
|
if(XGetTransientForHint(dpy, wins[i], &d1) |
|
|
|
&& (wa.map_state == IsViewable || getstate(wins[i]) == IconicState)) |
|
|
|
&& (wa.map_state == IsViewable || getstate(wins[i]) == IconicState)) |
|
|
|
manage(wins[i], &wa); |
|
|
|
manage(wins[i], &wa); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -1479,8 +1479,8 @@ setup(void) { |
|
|
|
wa.event_mask = ButtonPressMask|ExposureMask; |
|
|
|
wa.event_mask = ButtonPressMask|ExposureMask; |
|
|
|
|
|
|
|
|
|
|
|
barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen), |
|
|
|
barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen), |
|
|
|
CopyFromParent, DefaultVisual(dpy, screen), |
|
|
|
CopyFromParent, DefaultVisual(dpy, screen), |
|
|
|
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); |
|
|
|
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa); |
|
|
|
XDefineCursor(dpy, barwin, cursor[CurNormal]); |
|
|
|
XDefineCursor(dpy, barwin, cursor[CurNormal]); |
|
|
|
XMapRaised(dpy, barwin); |
|
|
|
XMapRaised(dpy, barwin); |
|
|
|
strcpy(stext, "dwm-"VERSION); |
|
|
|
strcpy(stext, "dwm-"VERSION); |
|
|
@ -1704,7 +1704,6 @@ unmapnotify(XEvent *e) { |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
updatebar(void) { |
|
|
|
updatebar(void) { |
|
|
|
|
|
|
|
|
|
|
|
if(dc.drawable != 0) |
|
|
|
if(dc.drawable != 0) |
|
|
|
XFreePixmap(dpy, dc.drawable); |
|
|
|
XFreePixmap(dpy, dc.drawable); |
|
|
|
dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen)); |
|
|
|
dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen)); |
|
|
@ -1839,7 +1838,7 @@ xerror(Display *dpy, XErrorEvent *ee) { |
|
|
|
|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) |
|
|
|
|| (ee->request_code == X_CopyArea && ee->error_code == BadDrawable)) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", |
|
|
|
fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n", |
|
|
|
ee->request_code, ee->error_code); |
|
|
|
ee->request_code, ee->error_code); |
|
|
|
return xerrorxlib(dpy, ee); /* may call exit */ |
|
|
|
return xerrorxlib(dpy, ee); /* may call exit */ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|