… | |
… | |
239 | CLEAR_ALL_SELECTION (); |
239 | CLEAR_ALL_SELECTION (); |
240 | rvideo = 0; |
240 | rvideo = 0; |
241 | } |
241 | } |
242 | else |
242 | else |
243 | { |
243 | { |
|
|
244 | CLEAR_ALL_SELECTION (); |
|
|
245 | |
244 | /* |
246 | /* |
245 | * add or delete rows as appropriate |
247 | * add or delete rows as appropriate |
246 | */ |
248 | */ |
247 | |
249 | |
248 | rxvt_salloc *old_ta = talloc; talloc = new rxvt_salloc (ncol * sizeof (text_t)); |
250 | rxvt_salloc *old_ta = talloc; talloc = new rxvt_salloc (ncol * sizeof (text_t)); |
… | |
… | |
325 | qline->l = ncol; |
327 | qline->l = ncol; |
326 | qline->is_longer (1); |
328 | qline->is_longer (1); |
327 | |
329 | |
328 | int qcol = 0; |
330 | int qcol = 0; |
329 | |
331 | |
|
|
332 | // see below for cursor adjustment rationale |
|
|
333 | if (p == ocur.row) |
|
|
334 | screen.cur.row = q - (total_rows - nrow); |
|
|
335 | |
330 | // fill a single destination line |
336 | // fill a single destination line |
331 | while (lofs < llen && qcol < ncol) |
337 | while (lofs < llen && qcol < ncol) |
332 | { |
338 | { |
333 | int prow = lofs / prev_ncol; |
339 | int prow = lofs / prev_ncol; |
334 | int pcol = lofs % prev_ncol; |
340 | int pcol = lofs % prev_ncol; |
… | |
… | |
388 | row_buf [row].clear (); scr_blank_screen_mem (row_buf [row], DEFAULT_RSTYLE); |
394 | row_buf [row].clear (); scr_blank_screen_mem (row_buf [row], DEFAULT_RSTYLE); |
389 | } |
395 | } |
390 | |
396 | |
391 | term_start = 0; |
397 | term_start = 0; |
392 | } |
398 | } |
393 | |
|
|
394 | #ifdef DEBUG_STRICT //TODO: remove |
|
|
395 | for (int i = top_row; i < nrow; i++) |
|
|
396 | assert (ROW (i).t); |
|
|
397 | #endif |
|
|
398 | |
399 | |
399 | free (old_buf); |
400 | free (old_buf); |
400 | delete old_ta; |
401 | delete old_ta; |
401 | delete old_ra; |
402 | delete old_ra; |
402 | |
403 | |