… | |
… | |
638 | |
638 | |
639 | if (count > 0 |
639 | if (count > 0 |
640 | && row1 == 0 |
640 | && row1 == 0 |
641 | && (current_screen == PRIMARY || option (Opt_secondaryScroll))) |
641 | && (current_screen == PRIMARY || option (Opt_secondaryScroll))) |
642 | { |
642 | { |
|
|
643 | min_it (count, row2 + total_rows); |
|
|
644 | |
643 | top_row = max (top_row - count, -saveLines); |
645 | top_row = max (top_row - count, -saveLines); |
644 | |
646 | |
645 | // scroll everything up 'count' lines |
647 | // scroll everything up 'count' lines |
646 | term_start = (term_start + count) % total_rows; |
648 | term_start = (term_start + count) % total_rows; |
647 | |
649 | |
… | |
… | |
655 | // erase newly scrolled-in lines |
657 | // erase newly scrolled-in lines |
656 | for (int i = count; i--; ) |
658 | for (int i = count; i--; ) |
657 | { |
659 | { |
658 | line_t &l = ROW(nrow - 1 - i); |
660 | line_t &l = ROW(nrow - 1 - i); |
659 | |
661 | |
660 | // optimize if already cleared, can be significant on slow machines |
662 | // optimise if already cleared, can be significant on slow machines |
661 | // could be rolled into scr_blank_screen_mem |
663 | // could be rolled into scr_blank_screen_mem |
662 | if (l.r && l.l < ncol - 1 && !((l.r[l.l + 1] ^ rstyle) & (RS_fgMask | RS_bgMask))) |
664 | if (l.r && l.l < ncol - 1 && !((l.r[l.l + 1] ^ rstyle) & (RS_fgMask | RS_bgMask))) |
663 | { |
665 | { |
664 | scr_blank_line (l, 0, l.l, rstyle); |
666 | scr_blank_line (l, 0, l.l, rstyle); |
665 | l.l = 0; |
667 | l.l = 0; |