made stdin reader more robust
This commit is contained in:
parent
0e5c8198bc
commit
eb756ee169
13
client.c
13
client.c
@ -404,8 +404,6 @@ manage(Window w, XWindowAttributes *wa)
|
|||||||
c->next = *l; /* *l == nil */
|
c->next = *l; /* *l == nil */
|
||||||
*l = c;
|
*l = c;
|
||||||
|
|
||||||
XMapRaised(dpy, c->win);
|
|
||||||
XMapRaised(dpy, c->title);
|
|
||||||
XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask,
|
XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask,
|
||||||
GrabModeAsync, GrabModeSync, None, None);
|
GrabModeAsync, GrabModeSync, None, None);
|
||||||
XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask,
|
XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask,
|
||||||
@ -418,10 +416,17 @@ manage(Window w, XWindowAttributes *wa)
|
|||||||
|| ((c->maxw == c->minw) && (c->maxh == c->minh));
|
|| ((c->maxw == c->minw) && (c->maxh == c->minh));
|
||||||
|
|
||||||
arrange(NULL);
|
arrange(NULL);
|
||||||
if(c->tags[tsel])
|
/* mapping the window now prevents flicker */
|
||||||
|
if(c->tags[tsel]) {
|
||||||
|
XMapRaised(dpy, c->win);
|
||||||
|
XMapRaised(dpy, c->title);
|
||||||
focus(c);
|
focus(c);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
ban_client(c);
|
ban_client(c);
|
||||||
|
XMapRaised(dpy, c->win);
|
||||||
|
XMapRaised(dpy, c->title);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
18
main.c
18
main.c
@ -264,6 +264,10 @@ main(int argc, char *argv[])
|
|||||||
XDefineCursor(dpy, barwin, cursor[CurNormal]);
|
XDefineCursor(dpy, barwin, cursor[CurNormal]);
|
||||||
XMapRaised(dpy, barwin);
|
XMapRaised(dpy, barwin);
|
||||||
|
|
||||||
|
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
|
||||||
|
dc.gc = XCreateGC(dpy, root, 0, 0);
|
||||||
|
draw_bar();
|
||||||
|
|
||||||
issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
|
issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
|
||||||
|
|
||||||
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
|
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
|
||||||
@ -272,15 +276,12 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
|
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
|
||||||
|
|
||||||
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
|
|
||||||
dc.gc = XCreateGC(dpy, root, 0, 0);
|
|
||||||
|
|
||||||
strcpy(stext, "dwm-"VERSION);
|
strcpy(stext, "dwm-"VERSION);
|
||||||
scan_wins();
|
scan_wins();
|
||||||
draw_bar();
|
|
||||||
|
|
||||||
/* main event loop, reads status text from stdin as well */
|
/* main event loop, reads status text from stdin as well */
|
||||||
while(running) {
|
while(running) {
|
||||||
|
Mainloop:
|
||||||
FD_ZERO(&rd);
|
FD_ZERO(&rd);
|
||||||
FD_SET(0, &rd);
|
FD_SET(0, &rd);
|
||||||
FD_SET(ConnectionNumber(dpy), &rd);
|
FD_SET(ConnectionNumber(dpy), &rd);
|
||||||
@ -298,8 +299,15 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
if(FD_ISSET(0, &rd)) {
|
if(FD_ISSET(0, &rd)) {
|
||||||
i = n = 0;
|
i = n = 0;
|
||||||
while((i = getchar()) != '\n' && n < sizeof(stext) - 1)
|
for(;;) {
|
||||||
|
if((i = getchar()) == EOF) {
|
||||||
|
stext[0] = 0;
|
||||||
|
goto Mainloop;
|
||||||
|
}
|
||||||
|
if(i == '\n' || n >= sizeof(stext) - 1)
|
||||||
|
break;
|
||||||
stext[n++] = i;
|
stext[n++] = i;
|
||||||
|
}
|
||||||
stext[n] = 0;
|
stext[n] = 0;
|
||||||
draw_bar();
|
draw_bar();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user