… | |
… | |
448 | scr_release (); |
448 | scr_release (); |
449 | prev_nrow = prev_ncol = 0; |
449 | prev_nrow = prev_ncol = 0; |
450 | scr_reset (); |
450 | scr_reset (); |
451 | |
451 | |
452 | scr_clear (true); |
452 | scr_clear (true); |
453 | scr_refresh (SLOW_REFRESH); |
453 | scr_refresh (); |
454 | } |
454 | } |
455 | |
455 | |
456 | /* ------------------------------------------------------------------------- * |
456 | /* ------------------------------------------------------------------------- * |
457 | * PROCESS SCREEN COMMANDS * |
457 | * PROCESS SCREEN COMMANDS * |
458 | * ------------------------------------------------------------------------- */ |
458 | * ------------------------------------------------------------------------- */ |
… | |
… | |
620 | top_row = max (top_row - count, -saveLines); |
620 | top_row = max (top_row - count, -saveLines); |
621 | |
621 | |
622 | // scroll everything up 'count' lines |
622 | // scroll everything up 'count' lines |
623 | term_start = (term_start + count) % total_rows; |
623 | term_start = (term_start + count) % total_rows; |
624 | |
624 | |
|
|
625 | // sever bottommost line |
625 | { |
626 | { |
626 | // severe bottommost scrolled line |
|
|
627 | line_t &l = ROW(row2 - count); |
627 | line_t &l = ROW(row2 - count); |
|
|
628 | l.is_longer (0); |
628 | l.touch (); |
629 | l.touch (); |
629 | l.is_longer (0); |
|
|
630 | } |
630 | } |
631 | |
631 | |
632 | // erase newly scorlled-in lines |
632 | // erase newly scrolled-in lines |
633 | for (int i = count; i; --i ) |
633 | for (int i = count; i--; ) |
634 | { |
634 | { |
635 | // basically this is a slightly optimized scr_blank_screen_mem |
635 | // basically this is a slightly optimized scr_blank_screen_mem |
636 | // it is worth the effort on slower machines |
636 | // it is worth the effort on slower machines |
637 | line_t &l = ROW(nrow - i); |
637 | line_t &l = ROW(nrow - 1 - i); |
638 | |
638 | |
639 | scr_blank_line (l, 0, l.l, rstyle); |
639 | scr_blank_line (l, 0, l.l, rstyle); |
640 | |
640 | |
641 | l.l = 0; |
641 | l.l = 0; |
642 | l.f = 0; |
642 | l.f = 0; |
… | |
… | |
817 | CLEAR_SELECTION (); |
817 | CLEAR_SELECTION (); |
818 | } |
818 | } |
819 | |
819 | |
820 | if (screen.flags & Screen_WrapNext) |
820 | if (screen.flags & Screen_WrapNext) |
821 | { |
821 | { |
822 | max_it (line->l, ncol); |
|
|
823 | line->is_longer (1); |
|
|
824 | |
|
|
825 | scr_do_wrap (); |
822 | scr_do_wrap (); |
826 | |
823 | |
|
|
824 | line->l = ncol; |
|
|
825 | line->is_longer (1); |
|
|
826 | |
827 | row = screen.cur.row; |
827 | row = screen.cur.row; |
828 | line = &ROW(row); /* _must_ refresh */ |
828 | line = &ROW(row); /* _must_ refresh */ |
829 | } |
829 | } |
830 | |
830 | |
831 | // some utf-8 decoders "decode" surrogate characters: let's fix this. |
831 | // some utf-8 decoders "decode" surrogate characters: let's fix this. |
… | |
… | |
1790 | } |
1790 | } |
1791 | |
1791 | |
1792 | for (i = rc[PART_BEG].row; i <= rc[PART_END].row; i++) |
1792 | for (i = rc[PART_BEG].row; i <= rc[PART_END].row; i++) |
1793 | fill_text (&drawn_buf[i].t[rc[PART_BEG].col], 0, rc[PART_END].col - rc[PART_BEG].col + 1); |
1793 | fill_text (&drawn_buf[i].t[rc[PART_BEG].col], 0, rc[PART_END].col - rc[PART_BEG].col + 1); |
1794 | |
1794 | |
|
|
1795 | num_scr_allow = 0; |
|
|
1796 | |
1795 | if (refresh) |
1797 | if (refresh) |
1796 | scr_refresh (SLOW_REFRESH); |
1798 | scr_refresh (); |
1797 | } |
1799 | } |
1798 | |
1800 | |
1799 | /* ------------------------------------------------------------------------- */ |
1801 | /* ------------------------------------------------------------------------- */ |
1800 | /* |
1802 | /* |
1801 | * Refresh the entire screen |
1803 | * Refresh the entire screen |
… | |
… | |
1935 | * Refresh the screen |
1937 | * Refresh the screen |
1936 | * drawn_text/drawn_rend contain the screen information before the update. |
1938 | * drawn_text/drawn_rend contain the screen information before the update. |
1937 | * screen.text/screen.rend contain what the screen will change to. |
1939 | * screen.text/screen.rend contain what the screen will change to. |
1938 | */ |
1940 | */ |
1939 | void |
1941 | void |
1940 | rxvt_term::scr_refresh (unsigned char refresh_type) |
1942 | rxvt_term::scr_refresh () |
1941 | { |
1943 | { |
1942 | unsigned char must_clear, /* use draw_string not draw_image_string */ |
1944 | unsigned char must_clear, /* use draw_string not draw_image_string */ |
1943 | showcursor; /* show the cursor */ |
1945 | showcursor; /* show the cursor */ |
1944 | int16_t col, row, /* column/row we're processing */ |
1946 | int16_t col, row, /* column/row we're processing */ |
1945 | ocrow; /* old cursor row */ |
1947 | ocrow; /* old cursor row */ |
… | |
… | |
2069 | #ifndef NO_SLOW_LINK_SUPPORT |
2071 | #ifndef NO_SLOW_LINK_SUPPORT |
2070 | /* |
2072 | /* |
2071 | * D: CopyArea pass - very useful for slower links |
2073 | * D: CopyArea pass - very useful for slower links |
2072 | * This has been deliberately kept simple. |
2074 | * This has been deliberately kept simple. |
2073 | */ |
2075 | */ |
2074 | i = num_scr; |
|
|
2075 | if (!display->is_local |
2076 | if (!display->is_local |
2076 | && refresh_type == FAST_REFRESH && num_scr_allow && num_scr |
2077 | && refresh_type == FAST_REFRESH && num_scr_allow && num_scr |
2077 | && abs (num_scr) < nrow && !must_clear) |
2078 | && abs (num_scr) < nrow && !must_clear) |
2078 | { |
2079 | { |
2079 | int16_t nits; |
2080 | int16_t nits; |
2080 | int j; |
2081 | int j; |
2081 | int len, wlen; |
2082 | int len, wlen; |
|
|
2083 | dLocal (int, num_scr); |
2082 | |
2084 | |
2083 | j = nrow; |
2085 | j = nrow; |
2084 | wlen = len = -1; |
2086 | wlen = len = -1; |
2085 | row = i > 0 ? 0 : j - 1; |
2087 | row = i > 0 ? 0 : j - 1; |
2086 | for (; j-- >= 0; row += (i > 0 ? 1 : -1)) |
2088 | for (; j-- >= 0; row += (i > 0 ? 1 : -1)) |