]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - terminal.c
Stop IAC IAC from being swallowed in telnet (fix due to Robert de Bath)
[PuTTY.git] / terminal.c
index feec70a457e5191a07cc709fd5f35a50efb4547f..4ecb39c60a0002a76bee6a6067471fe71c5244ed 100644 (file)
@@ -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;
@@ -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;
@@ -1254,8 +1256,8 @@ void term_paint (Context ctx, int l, int t, int r, int b) {
     right = (r - 1) / font_width;
     top = t / font_height;
     bottom = (b - 1) / font_height;
-    for (i = top; i <= bottom && j<rows ; i++)
-      for (j = left; j <= right && j<cols ; j++)
+    for (i = top; i <= bottom && i < rows ; i++)
+      for (j = left; j <= right && j < cols ; j++)
            disptext[i*(cols+1)+j] = ATTR_INVALID;
 
     do_paint (ctx, FALSE);
@@ -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;