aboutsummaryrefslogtreecommitdiffstats
path: root/action.c
diff options
context:
space:
mode:
authorgotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2007-06-03 17:44:43 +0000
committergotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2>2007-06-03 17:44:43 +0000
commitc9e747c04ac0adebabfc06e0aaafd3eac70a46b7 (patch)
tree7a6b45acdb3e31880e941ef7a6683000e3be29bb /action.c
parentfa4f55fae629bca4f6b2fc0010aa249af32cdd3d (diff)
downloaddzen-c9e747c04ac0adebabfc06e0aaafd3eac70a46b7.tar.gz
dzen-c9e747c04ac0adebabfc06e0aaafd3eac70a46b7.zip
simplified scrolling
git-svn-id: http://dzen.googlecode.com/svn/trunk@55 f2baff5b-bf2c-0410-a398-912abdc3d8b2
Diffstat (limited to 'action.c')
-rw-r--r--action.c45
1 files changed, 21 insertions, 24 deletions
diff --git a/action.c b/action.c
index 27ed3cd..e571285 100644
--- a/action.c
+++ b/action.c
@@ -231,25 +231,32 @@ a_togglestick(char * opt[]) {
return 0;
}
+void
+scroll(int n) {
+ if(dzen.slave_win.first_line_vis + n < 0) {
+ dzen.slave_win.first_line_vis = 0;
+ dzen.slave_win.last_line_vis = dzen.slave_win.max_lines;
+ }
+ else if(dzen.slave_win.last_line_vis + n > dzen.slave_win.tcnt) {
+ dzen.slave_win.first_line_vis = dzen.slave_win.tcnt - dzen.slave_win.max_lines;
+ dzen.slave_win.last_line_vis = dzen.slave_win.tcnt;
+ } else {
+ dzen.slave_win.first_line_vis += n;
+ dzen.slave_win.last_line_vis += n;
+ }
+
+ x_draw_body();
+}
+
int
a_scrollup(char * opt[]) {
int n=1;
if(opt[0])
n = atoi(opt[0]);
+ if(dzen.slave_win.max_lines)
+ scroll(-1*n);
- if(dzen.slave_win.max_lines
- && dzen.slave_win.first_line_vis
- && dzen.slave_win.last_line_vis > dzen.slave_win.max_lines) {
- if(dzen.slave_win.first_line_vis - n < 0) {
- dzen.slave_win.first_line_vis = 0;
- dzen.slave_win.last_line_vis = dzen.slave_win.max_lines;
- } else {
- dzen.slave_win.first_line_vis -= n;
- dzen.slave_win.last_line_vis -=n;
- }
- x_draw_body();
- }
return 0;
}
@@ -259,19 +266,9 @@ a_scrolldown(char * opt[]) {
if(opt[0])
n = atoi(opt[0]);
+ if(dzen.slave_win.max_lines)
+ scroll(n);
- if(dzen.slave_win.max_lines
- && dzen.slave_win.last_line_vis >= dzen.slave_win.max_lines
- && dzen.slave_win.last_line_vis < dzen.slave_win.tcnt) {
- if(dzen.slave_win.last_line_vis + n > dzen.slave_win.tcnt) {
- dzen.slave_win.first_line_vis = dzen.slave_win.tcnt - dzen.slave_win.max_lines;
- dzen.slave_win.last_line_vis = dzen.slave_win.tcnt;
- } else {
- dzen.slave_win.first_line_vis += n;
- dzen.slave_win.last_line_vis +=n;
- }
- x_draw_body();
- }
return 0;
}