Selection point movement on scroll should move selanchor as well as
[u/mdw/putty] / terminal.c
index ab97e3c..f238f09 100644 (file)
@@ -668,6 +668,10 @@ static void scroll(int topline, int botline, int lines, int sb)
             * of course, if the line _hasn't_ moved into the
             * scrollback then we don't do this, and cut them off
             * at the top of the scroll region.
+            * 
+            * This applies to selstart and selend (for an existing
+            * selection), and also selanchor (for one being
+            * selected as we speak).
             */
            seltop = sb ? -savelines : 0;
 
@@ -685,6 +689,13 @@ static void scroll(int topline, int botline, int lines, int sb)
                    selend.x = 0;
                }
            }
+           if (selanchor.y >= seltop && selanchor.y <= botline) {
+               selanchor.y--;
+               if (selanchor.y < seltop) {
+                   selanchor.y = seltop;
+                   selanchor.x = 0;
+               }
+           }
 
            lines--;
        }