win: implement Scroll and Noscroll

This commit is contained in:
Russ Cox 2008-11-13 15:39:56 -08:00
parent fa580e2116
commit e1118cf27c

View file

@ -171,7 +171,7 @@ threadmain(int argc, char **argv)
putenv("winid", buf); putenv("winid", buf);
sprint(buf, "%d/tag", id); sprint(buf, "%d/tag", id);
fd = fsopenfd(fs, buf, OWRITE|OCEXEC); fd = fsopenfd(fs, buf, OWRITE|OCEXEC);
write(fd, " Send Delete", 12); write(fd, " Send Noscroll", 1+4+1+8);
close(fd); close(fd);
sprint(buf, "%d/event", id); sprint(buf, "%d/event", id);
eventfd = fsopen(fs, buf, ORDWR|OCEXEC); eventfd = fsopen(fs, buf, ORDWR|OCEXEC);
@ -202,6 +202,8 @@ threadmain(int argc, char **argv)
fswrite(ctlfd, buf, strlen(buf)); fswrite(ctlfd, buf, strlen(buf));
sprint(buf, "dump %s\n", dump); sprint(buf, "dump %s\n", dump);
fswrite(ctlfd, buf, strlen(buf)); fswrite(ctlfd, buf, strlen(buf));
sprint(buf, "scroll");
fswrite(ctlfd, buf, strlen(buf));
updatewinsize(25, 80, 0, 0); updatewinsize(25, 80, 0, 0);
proccreate(stdoutproc, nil, STACK); proccreate(stdoutproc, nil, STACK);
@ -402,6 +404,16 @@ stdinproc(void *v)
e2.flag = e.flag; e2.flag = e.flag;
e = e2; e = e2;
} }
char buf[100];
snprint(buf, sizeof buf, "%.*S", e.nr, e.r);
if(cistrcmp(buf, "scroll") == 0) {
fsprint(ctlfd, "scroll\nshow");
break;
}
if(cistrcmp(buf, "noscroll") == 0) {
fsprint(ctlfd, "noscroll");
break;
}
if(e.flag & 8){ if(e.flag & 8){
if(e.q1 != e.q0){ if(e.q1 != e.q0){
sende(&e, fd0, cfd, afd, dfd, 0); sende(&e, fd0, cfd, afd, dfd, 0);