diff options
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; } |