X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/e42ad0271c39eaf0173d6f38132e14c504b7466c..c51a56e2f86b1ab9c803453186e5e21697554c06:/terminal.c diff --git a/terminal.c b/terminal.c index a935be7d..f4669df4 100644 --- a/terminal.c +++ b/terminal.c @@ -628,6 +628,8 @@ void term_out(void) { scroll (marg_t, marg_b, 1, TRUE); else if (curs_y < rows-1) curs_y++; + if (cfg.lfhascr) + curs_x = 0; fix_cpos; wrapnext = FALSE; disptop = scrtop; @@ -663,7 +665,7 @@ void term_out(void) { if (insert) insch (1); check_selection (cpos, cpos+1); - *cpos++ = c | curr_attr | + *cpos++ = xlat_tty2scr((unsigned char)c) | curr_attr | (c <= 0x7F ? cset_attr[cset] : ATTR_ASCII); curs_x++; if (curs_x == cols) { @@ -927,12 +929,12 @@ void term_out(void) { } break; case 'r': /* set scroll margins */ - if (esc_nargs <= 2) { + if (!esc_query && esc_nargs <= 2) { int top, bot; top = def(esc_args[0], 1) - 1; if (top < 0) top = 0; - bot = (esc_nargs == 1 ? rows : + bot = (esc_nargs <= 1 || esc_args[1] == 0 ? rows : def(esc_args[1], rows)) - 1; if (bot >= rows) bot = rows-1; @@ -1343,7 +1345,13 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) { if (y<0) y = 0; if (y>=rows) y = rows-1; - if (x<0) x = 0; + if (x<0) { + if (y > 0) { + x = cols-1; + y--; + } else + x = 0; + } if (x>=cols) x = cols-1; selpoint = disptop + y * (cols+1) + x; @@ -1428,7 +1436,17 @@ void term_mouse (Mouse_Button b, Mouse_Action a, int x, int y) { !(p <= data+len-sizeof(sel_nl) && !memcmp(p, sel_nl, sizeof(sel_nl)))) p++; - back->send (q, p-q); + + { + int i; + unsigned char c; + for(i=0;isend(&c,1); + } + } + if (p <= data+len-sizeof(sel_nl) && !memcmp(p, sel_nl, sizeof(sel_nl))) { back->send ("\r", 1);