… | |
… | |
286 | ocur.row = MOD (term_start + ocur.row, prev_total_rows); |
286 | ocur.row = MOD (term_start + ocur.row, prev_total_rows); |
287 | |
287 | |
288 | do |
288 | do |
289 | { |
289 | { |
290 | p = MOD (p - 1, prev_total_rows); |
290 | p = MOD (p - 1, prev_total_rows); |
291 | #ifdef DEBUG_STRICT |
|
|
292 | assert (old_buf [MOD (p, prev_total_rows)].t); |
291 | assert (old_buf [MOD (p, prev_total_rows)].t); |
293 | #endif |
|
|
294 | int plines = 1; |
292 | int plines = 1; |
295 | int llen = old_buf [MOD (p, prev_total_rows)].l; |
293 | int llen = old_buf [MOD (p, prev_total_rows)].l; |
296 | |
294 | |
297 | while (p != pend && old_buf [MOD (p - 1, prev_total_rows)].is_longer ()) |
295 | while (p != pend && old_buf [MOD (p - 1, prev_total_rows)].is_longer ()) |
298 | { |
296 | { |
… | |
… | |
510 | } |
508 | } |
511 | |
509 | |
512 | /* boundary check in case screen size changed between SAVE and RESTORE */ |
510 | /* boundary check in case screen size changed between SAVE and RESTORE */ |
513 | min_it (s->cur.row, nrow - 1); |
511 | min_it (s->cur.row, nrow - 1); |
514 | min_it (s->cur.col, ncol - 1); |
512 | min_it (s->cur.col, ncol - 1); |
515 | #ifdef DEBUG_STRICT |
|
|
516 | assert (s->cur.row >= 0); |
513 | assert (s->cur.row >= 0); |
517 | assert (s->cur.col >= 0); |
514 | assert (s->cur.col >= 0); |
518 | #endif |
|
|
519 | } |
515 | } |
520 | |
516 | |
521 | void |
517 | void |
522 | rxvt_term::scr_swap_screen () |
518 | rxvt_term::scr_swap_screen () |
523 | { |
519 | { |
… | |
… | |
783 | scr_scroll_text (screen.tscroll, screen.bscroll, minlines); |
779 | scr_scroll_text (screen.tscroll, screen.bscroll, minlines); |
784 | screen.cur.row -= minlines; |
780 | screen.cur.row -= minlines; |
785 | } |
781 | } |
786 | } |
782 | } |
787 | |
783 | |
788 | #ifdef DEBUG_STRICT |
|
|
789 | assert (screen.cur.col < ncol); |
784 | assert (screen.cur.col < ncol); |
790 | assert (screen.cur.row < nrow |
785 | assert (screen.cur.row < nrow |
791 | && screen.cur.row >= top_row); |
786 | && screen.cur.row >= top_row); |
792 | #endif |
|
|
793 | int row = screen.cur.row; |
787 | int row = screen.cur.row; |
794 | |
788 | |
795 | checksel = selection.op && current_screen == selection.screen ? 1 : 0; |
789 | checksel = selection.op && current_screen == selection.screen ? 1 : 0; |
796 | |
790 | |
797 | line_t *line = &ROW(row); |
791 | line_t *line = &ROW(row); |
… | |
… | |
1001 | #endif |
995 | #endif |
1002 | } |
996 | } |
1003 | |
997 | |
1004 | max_it (line->l, screen.cur.col); |
998 | max_it (line->l, screen.cur.col); |
1005 | |
999 | |
1006 | #ifdef DEBUG_STRICT |
|
|
1007 | assert (screen.cur.row >= 0); |
1000 | assert (screen.cur.row >= 0); |
1008 | #endif |
|
|
1009 | } |
1001 | } |
1010 | |
1002 | |
1011 | /* ------------------------------------------------------------------------- */ |
1003 | /* ------------------------------------------------------------------------- */ |
1012 | /* |
1004 | /* |
1013 | * Process Backspace. Move back the cursor back a position, wrap if have to |
1005 | * Process Backspace. Move back the cursor back a position, wrap if have to |
… | |
… | |
1941 | |
1933 | |
1942 | bell_ev.start (VISUAL_BELL_DURATION); |
1934 | bell_ev.start (VISUAL_BELL_DURATION); |
1943 | } |
1935 | } |
1944 | else |
1936 | else |
1945 | XBell (dpy, 0); |
1937 | XBell (dpy, 0); |
|
|
1938 | HOOK_INVOKE ((this, HOOK_BELL, DT_END)); |
1946 | #endif |
1939 | #endif |
1947 | } |
1940 | } |
1948 | |
1941 | |
1949 | /* ------------------------------------------------------------------------- */ |
1942 | /* ------------------------------------------------------------------------- */ |
1950 | /* ARGSUSED */ |
1943 | /* ARGSUSED */ |
… | |
… | |
1969 | row_start = view_start; |
1962 | row_start = view_start; |
1970 | } |
1963 | } |
1971 | |
1964 | |
1972 | wctomb (0, 0); |
1965 | wctomb (0, 0); |
1973 | |
1966 | |
1974 | for (int r1 = 0; r1 < nrows; r1++) |
1967 | for (int r1 = row_start; r1 < row_start + nrows; r1++) |
1975 | { |
1968 | { |
1976 | text_t *tp = ROW(r1).t; |
1969 | text_t *tp = ROW(r1).t; |
1977 | int len = ROW(r1).l; |
1970 | int len = ROW(r1).l; |
1978 | |
1971 | |
1979 | for (int i = len >= 0 ? len : ncol - 1; i--; ) //TODO//FIXME//LEN |
1972 | for (int i = len >= 0 ? len : ncol - 1; i--; ) //TODO//FIXME//LEN |
… | |
… | |
2250 | for (i = 0; ++col < ncol; ) |
2243 | for (i = 0; ++col < ncol; ) |
2251 | { |
2244 | { |
2252 | if (stp[col] == NOCHAR) |
2245 | if (stp[col] == NOCHAR) |
2253 | { |
2246 | { |
2254 | dtp[col] = stp[col]; |
2247 | dtp[col] = stp[col]; |
2255 | drp[col] = rend; |
2248 | drp[col] = srp[col]; |
|
|
2249 | |
2256 | count++; |
2250 | count++; |
2257 | i++; |
2251 | i++; |
2258 | |
2252 | |
2259 | continue; |
2253 | continue; |
2260 | } |
2254 | } |