X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/dcfa5de155ccd04921b36826cd705fb16af74248..8df7a775f6f8b0f81f84eafe28cd0bb8d4c6d1f4:/terminal.c diff --git a/terminal.c b/terminal.c index 7d3c60ca..12ad1e9c 100644 --- a/terminal.c +++ b/terminal.c @@ -1,11 +1,4 @@ #include -#ifndef AUTO_WINSOCK -#ifdef WINSOCK_TWO -#include -#else -#include -#endif -#endif #include #include @@ -212,9 +205,10 @@ void term_update(void) { ctx = get_ctx(); if (ctx) { if ( (seen_key_event && (cfg.scroll_on_key)) || - (seen_disp_event && (!cfg.scroll_on_key)) ) { + (seen_disp_event && (cfg.scroll_on_disp)) ) { disptop = scrtop; seen_disp_event = seen_key_event = 0; + update_sbar(); } do_paint (ctx, TRUE); sys_cursor(curs_x, curs_y + (scrtop - disptop) / (cols+1)); @@ -2149,7 +2143,7 @@ void term_nopaste() { } void term_paste() { -static long last_paste = 0; + static long last_paste = 0; long now, paste_diff; if(paste_len == 0) return; @@ -2165,10 +2159,15 @@ static long last_paste = 0; while(paste_possend (&c, 1); + int n = 0; + while (n + paste_pos < paste_len) { + if (paste_buffer[paste_pos + n++] == '\r') + break; + } + ldisc->send (paste_buffer+paste_pos, n); + paste_pos += n; - if (c =='\r') { + if (paste_pos < paste_len) { paste_hold = 1; return; } @@ -2187,3 +2186,14 @@ void term_deselect (void) { deselect(); term_update(); } + +/* + * from_backend(), to get data from the backend for the terminal. + */ +void from_backend(int is_stderr, char *data, int len) { + while (len--) { + if (inbuf_head >= INBUF_SIZE) + term_out(); + inbuf[inbuf_head++] = *data++; + } +}