aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/9term/9term.c19
-rw-r--r--src/cmd/9term/dat.h3
-rw-r--r--src/cmd/9term/fns.h2
-rw-r--r--src/cmd/9term/win.c10
-rw-r--r--src/cmd/9term/wind.c13
-rw-r--r--src/cmd/acme/dat.h1
-rw-r--r--src/cmd/acme/exec.c1
-rw-r--r--src/cmd/acme/xfid.c14
8 files changed, 16 insertions, 47 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index 806215df..344a7b55 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -67,7 +67,7 @@ threadmain(int argc, char *argv[])
fontname = EARGF(usage());
break;
case 's':
- scrolling = TRUE;
+ /* no-op */
break;
case 'c':
cooked = TRUE;
@@ -114,7 +114,7 @@ threadmain(int argc, char *argv[])
timerinit();
servedevtext();
rcpid = rcstart(argc, argv, &rcfd, &sfd);
- w = new(screen, FALSE, scrolling, rcpid, ".", nil, nil);
+ w = new(screen, FALSE, rcpid, ".", nil, nil);
threadcreate(keyboardthread, nil, STACK);
threadcreate(mousethread, nil, STACK);
@@ -241,7 +241,7 @@ wpointto(Point pt)
}
Window*
-new(Image *i, int hideit, int scrollit, int pid, char *dir, char *cmd, char **argv)
+new(Image *i, int hideit, int pid, char *dir, char *cmd, char **argv)
{
Window *w;
Mousectl *mc;
@@ -258,7 +258,7 @@ new(Image *i, int hideit, int scrollit, int pid, char *dir, char *cmd, char **ar
*mc = *mousectl;
/* mc->image = i; */
mc->c = cm;
- w = wmk(i, mc, ck, cctl, scrollit);
+ w = wmk(i, mc, ck, cctl);
free(mc); /* wmk copies *mc */
window = erealloc(window, ++nwindow*sizeof(Window*));
window[nwindow-1] = w;
@@ -288,7 +288,6 @@ enum
Snarf,
Plumb,
Send,
- Scroll,
Cook
};
@@ -298,7 +297,6 @@ char *menu2str[] = {
"snarf",
"plumb",
"send",
- "scroll",
"cook",
nil
};
@@ -317,10 +315,6 @@ button2menu(Window *w)
if(w->deleted)
return;
incref(&w->ref);
- if(w->scrolling)
- menu2str[Scroll] = "noscroll";
- else
- menu2str[Scroll] = "scroll";
if(cooked)
menu2str[Cook] = "nocook";
else
@@ -364,11 +358,6 @@ button2menu(Window *w)
wsetselect(w, w->nr, w->nr);
wshow(w, w->nr);
break;
-
- case Scroll:
- if(w->scrolling ^= 1)
- wshow(w, w->nr);
- break;
case Cook:
cooked ^= 1;
diff --git a/src/cmd/9term/dat.h b/src/cmd/9term/dat.h
index bc6d1fc9..052f3b82 100644
--- a/src/cmd/9term/dat.h
+++ b/src/cmd/9term/dat.h
@@ -131,7 +131,6 @@ struct Window
Rectangle lastsr;
int topped;
int notefd;
- uchar scrolling;
Cursor cursor;
Cursor *cursorp;
uchar holding;
@@ -149,7 +148,7 @@ int winborder(Window*, Point);
void winctl(void*);
void winshell(void*);
Window* wlookid(int);
-Window* wmk(Image*, Mousectl*, Channel*, Channel*, int);
+Window* wmk(Image*, Mousectl*, Channel*, Channel*);
Window* wpointto(Point);
Window* wtop(Point);
void wtopme(Window*);
diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
index a0ae686a..cdb5ff6f 100644
--- a/src/cmd/9term/fns.h
+++ b/src/cmd/9term/fns.h
@@ -6,7 +6,7 @@ int whide(Window*);
int wunhide(int);
void freescrtemps(void);
int parsewctl(char**, Rectangle, Rectangle*, int*, int*, int*, int*, char**, char*, char*);
-Window *new(Image*, int, int, int, char*, char*, char**);
+Window *new(Image*, int, int, char*, char*, char**);
void riosetcursor(Cursor*, int);
int min(int, int);
int max(int, int);
diff --git a/src/cmd/9term/win.c b/src/cmd/9term/win.c
index 93dc770a..fd8e3998 100644
--- a/src/cmd/9term/win.c
+++ b/src/cmd/9term/win.c
@@ -181,7 +181,7 @@ threadmain(int argc, char **argv)
putenv("winid", buf);
sprint(buf, "%d/tag", id);
fd = fsopenfd(fs, buf, OWRITE|OCEXEC);
- write(fd, " Send Noscroll", 1+4+1+8);
+ write(fd, " Send", 1+4);
close(fd);
sprint(buf, "%d/event", id);
eventfd = fsopen(fs, buf, ORDWR|OCEXEC);
@@ -440,14 +440,6 @@ stdinproc(void *v)
}
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(cistrcmp(buf, "cook") == 0) {
cook = 1;
break;
diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
index 4cc9c207..aa7c8288 100644
--- a/src/cmd/9term/wind.c
+++ b/src/cmd/9term/wind.c
@@ -36,7 +36,7 @@ static Image *lightholdcol;
static Image *paleholdcol;
Window*
-wmk(Image *i, Mousectl *mc, Channel *ck, Channel *cctl, int scrolling)
+wmk(Image *i, Mousectl *mc, Channel *ck, Channel *cctl)
{
Window *w;
Rectangle r;
@@ -77,7 +77,6 @@ wmk(Image *i, Mousectl *mc, Channel *ck, Channel *cctl, int scrolling)
w->topped = ++topped;
w->id = ++id;
w->notefd = -1;
- w->scrolling = scrolling;
w->dir = estrdup(startdir);
w->label = estrdup("<unnamed>");
r = insetrect(w->i->r, Selborder);
@@ -192,7 +191,7 @@ winctl(void *arg)
{
Rune *rp, *bp, *up, *kbdr;
uint qh;
- int nr, nb, c, wid, i, npart, initial, lastb;
+ int nr, nb, c, wid, i, npart, initial, lastb, scrolling;
char *s, *t, part[UTFmax];
Window *w;
Mousestate *mp, m;
@@ -248,10 +247,7 @@ winctl(void *arg)
alts[WMouseread].op = CHANSND;
else
alts[WMouseread].op = CHANNOP;
- if(!w->scrolling && !w->mouseopen && w->qh>w->org+w->f.nchars)
- alts[WCwrite].op = CHANNOP;
- else
- alts[WCwrite].op = CHANSND;
+ alts[WCwrite].op = CHANSND;
if(w->deleted || !w->wctlready)
alts[WWread].op = CHANNOP;
else
@@ -369,8 +365,9 @@ winctl(void *arg)
w->qh = qh;
}
nr = up - rp;
+ scrolling = w->org <= w->qh && w->qh <= w->org + w->f.nchars;
w->qh = winsert(w, rp, nr, w->qh)+nr;
- if(w->scrolling || w->mouseopen)
+ if(scrolling)
wshow(w, w->qh);
wsetselect(w, w->q0, w->q1);
wscrdraw(w);
diff --git a/src/cmd/acme/dat.h b/src/cmd/acme/dat.h
index b15395fd..300ba65f 100644
--- a/src/cmd/acme/dat.h
+++ b/src/cmd/acme/dat.h
@@ -243,7 +243,6 @@ struct Window
Range limit;
uchar nopen[QMAX];
uchar nomark;
- uchar noscroll;
Range wrselrange;
int rdselfd;
Column *col;
diff --git a/src/cmd/acme/exec.c b/src/cmd/acme/exec.c
index a71b5b48..ad4da001 100644
--- a/src/cmd/acme/exec.c
+++ b/src/cmd/acme/exec.c
@@ -960,6 +960,7 @@ sendx(Text *et, Text *t, Text *_0, int _1, int _2, Rune *_3, int _4)
if(textreadc(t, t->file->b.nc-1) != '\n'){
textinsert(t, t->file->b.nc, Lnl, 1, TRUE);
textsetselect(t, t->file->b.nc, t->file->b.nc);
+ textshow(t, t->q1, t->q1, 1);
}
}
diff --git a/src/cmd/acme/xfid.c b/src/cmd/acme/xfid.c
index db5d54b0..18b06dd1 100644
--- a/src/cmd/acme/xfid.c
+++ b/src/cmd/acme/xfid.c
@@ -510,8 +510,8 @@ xfidwrite(Xfid *x)
if(tq1 >= q0)
tq1 += nr;
textsetselect(t, tq0, tq1);
- if(!t->w->noscroll)
- textshow(t, q0, q0+nr, 0);
+ if(t->org <= q0 && q0 <= t->org+t->fr.nchars)
+ textshow(t, q0+nr, q0+nr, 0);
textscrdraw(t);
winsettag(w);
free(r);
@@ -568,7 +568,7 @@ xfidwrite(Xfid *x)
}
q0 = textbsinsert(t, q0, r, nr, TRUE, &nr);
textsetselect(t, t->q0, t->q1); /* insert could leave it somewhere else */
- if(qid!=QWwrsel && !t->w->noscroll)
+ if(qid!=QWwrsel && t->org <= q0 && q0 < t->org+t->fr.nchars)
textshow(t, q0+nr, q0+nr, 1);
textscrdraw(t);
}
@@ -768,18 +768,10 @@ out:
w->filemenu = TRUE;
m = 4;
}else
- if(strncmp(p, "noscroll", 8) == 0){ /* turn off automatic scrolling */
- w->noscroll = TRUE;
- m = 8;
- }else
if(strncmp(p, "cleartag", 8) == 0){ /* wipe tag right of bar */
wincleartag(w);
settag = TRUE;
m = 8;
- }else
- if(strncmp(p, "scroll", 6) == 0){ /* turn on automatic scrolling (writes to body only) */
- w->noscroll = FALSE;
- m = 6;
}else{
err = Ebadctl;
break;