|
38 | 38 | * in tl_scrollback are no longer used. |
39 | 39 | * |
40 | 40 | * TODO: |
41 | | - * - add a character in :ls output |
42 | | - * - add 't' to mode() |
43 | | - * - use win_del_lines() to make scroll-up efficient. |
44 | | - * - Make StatusLineTerm adjust UserN highlighting like StatusLineNC does, see |
45 | | - * use of hightlight_stlnc[]. |
46 | 41 | * - implement term_setsize() |
47 | 42 | * - add test for giving error for invalid 'termsize' value. |
48 | 43 | * - support minimal size when 'termsize' is "rows*cols". |
@@ -1495,11 +1490,21 @@ handle_damage(VTermRect rect, void *user) |
1495 | 1490 | } |
1496 | 1491 |
|
1497 | 1492 | static int |
1498 | | -handle_moverect(VTermRect dest UNUSED, VTermRect src UNUSED, void *user) |
| 1493 | +handle_moverect(VTermRect dest, VTermRect src, void *user) |
1499 | 1494 | { |
1500 | 1495 | term_T *term = (term_T *)user; |
| 1496 | + win_T *wp; |
1501 | 1497 |
|
1502 | | - /* TODO */ |
| 1498 | + if (dest.start_col == src.start_col |
| 1499 | + && dest.end_col == src.end_col |
| 1500 | + && dest.start_row < src.start_row) |
| 1501 | + FOR_ALL_WINDOWS(wp) |
| 1502 | + { |
| 1503 | + if (wp->w_buffer == term->tl_buffer) |
| 1504 | + /* scrolling up is much more efficient when deleting lines */ |
| 1505 | + win_del_lines(wp, dest.start_row, |
| 1506 | + src.start_row - dest.start_row, FALSE, FALSE); |
| 1507 | + } |
1503 | 1508 | redraw_buf_later(term->tl_buffer, NOT_VALID); |
1504 | 1509 | return 1; |
1505 | 1510 | } |
|
0 commit comments