diff options
author | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-06-03 17:44:43 +0000 |
---|---|---|
committer | gotmor <gotmor@f2baff5b-bf2c-0410-a398-912abdc3d8b2> | 2007-06-03 17:44:43 +0000 |
commit | c9e747c04ac0adebabfc06e0aaafd3eac70a46b7 (patch) | |
tree | 7a6b45acdb3e31880e941ef7a6683000e3be29bb /action.c | |
parent | fa4f55fae629bca4f6b2fc0010aa249af32cdd3d (diff) | |
download | dzen-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.c | 45 |
1 files changed, 21 insertions, 24 deletions
@@ -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; } |