Use tsetdirt in tscrollup and tscrolldown.
tscrollup and tscrolldown do not use tsetdirt, but their code is equivalent to tsetdirt(orig, term.bot-n); tsetdirt(orig+n, term.bot); tclearregion also marks cleared lines as dirty. In tscrolldown it sets lines from term.bot-n+1 to term.bot dirty, and in tscrollup it sets lines from orig to orig+n-1 dirty. In both functions all lines from orig to term.bot are effectively set dirty, but in tscrolldown lines from orig+n to term.bot are set dirty twice, and in tscrollup lines from orig to term.bot-n are set dirty twice. These patches make it clear which lines are set dirty and sets them dirty once in each funciton.
This commit is contained in:
parent
f9dc374ea0
commit
3afdb4ff04
1 changed files with 4 additions and 6 deletions
10
st.c
10
st.c
|
@ -1399,14 +1399,13 @@ tscrolldown(int orig, int n) {
|
||||||
LIMIT(n, 0, term.bot-orig+1);
|
LIMIT(n, 0, term.bot-orig+1);
|
||||||
|
|
||||||
tclearregion(0, term.bot-n+1, term.col-1, term.bot);
|
tclearregion(0, term.bot-n+1, term.col-1, term.bot);
|
||||||
|
tsetdirt(orig, term.bot-n);
|
||||||
|
tsetdirt(orig+n, term.bot);
|
||||||
|
|
||||||
for(i = term.bot; i >= orig+n; i--) {
|
for(i = term.bot; i >= orig+n; i--) {
|
||||||
temp = term.line[i];
|
temp = term.line[i];
|
||||||
term.line[i] = term.line[i-n];
|
term.line[i] = term.line[i-n];
|
||||||
term.line[i-n] = temp;
|
term.line[i-n] = temp;
|
||||||
|
|
||||||
term.dirty[i] = 1;
|
|
||||||
term.dirty[i-n] = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selscroll(orig, n);
|
selscroll(orig, n);
|
||||||
|
@ -1419,14 +1418,13 @@ tscrollup(int orig, int n) {
|
||||||
LIMIT(n, 0, term.bot-orig+1);
|
LIMIT(n, 0, term.bot-orig+1);
|
||||||
|
|
||||||
tclearregion(0, orig, term.col-1, orig+n-1);
|
tclearregion(0, orig, term.col-1, orig+n-1);
|
||||||
|
tsetdirt(orig, term.bot-n);
|
||||||
|
tsetdirt(orig+n, term.bot);
|
||||||
|
|
||||||
for(i = orig; i <= term.bot-n; i++) {
|
for(i = orig; i <= term.bot-n; i++) {
|
||||||
temp = term.line[i];
|
temp = term.line[i];
|
||||||
term.line[i] = term.line[i+n];
|
term.line[i] = term.line[i+n];
|
||||||
term.line[i+n] = temp;
|
term.line[i+n] = temp;
|
||||||
|
|
||||||
term.dirty[i] = 1;
|
|
||||||
term.dirty[i+n] = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selscroll(orig, -n);
|
selscroll(orig, -n);
|
||||||
|
|
Loading…
Reference in a new issue