X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/bfa5400d3e166e1acc25dbe0b7f1fdf74b272568..a5dd84675905dfc4274cf45424e6f3a9e385e1a7:/terminal.c diff --git a/terminal.c b/terminal.c index 1fa66e12..083b0fb4 100644 --- a/terminal.c +++ b/terminal.c @@ -850,26 +850,29 @@ static void scroll(Terminal *term, int topline, int botline, int lines, int sb) */ seltop = sb ? -term->savelines : topline; - if (term->selstart.y >= seltop && - term->selstart.y <= botline) { - term->selstart.y--; - if (term->selstart.y < seltop) { - term->selstart.y = seltop; - term->selstart.x = 0; + if (term->selstate != NO_SELECTION) { + if (term->selstart.y >= seltop && + term->selstart.y <= botline) { + term->selstart.y--; + if (term->selstart.y < seltop) { + term->selstart.y = seltop; + term->selstart.x = 0; + } } - } - if (term->selend.y >= seltop && term->selend.y <= botline) { - term->selend.y--; - if (term->selend.y < seltop) { - term->selend.y = seltop; - term->selend.x = 0; + if (term->selend.y >= seltop && term->selend.y <= botline) { + term->selend.y--; + if (term->selend.y < seltop) { + term->selend.y = seltop; + term->selend.x = 0; + } } - } - if (term->selanchor.y >= seltop && term->selanchor.y <= botline) { - term->selanchor.y--; - if (term->selanchor.y < seltop) { - term->selanchor.y = seltop; - term->selanchor.x = 0; + if (term->selanchor.y >= seltop && + term->selanchor.y <= botline) { + term->selanchor.y--; + if (term->selanchor.y < seltop) { + term->selanchor.y = seltop; + term->selanchor.x = 0; + } } } @@ -3796,9 +3799,13 @@ static void clipme(Terminal *term, pos top, pos bottom, int rect, int desel) void term_copyall(Terminal *term) { pos top; + pos bottom; + tree234 *screen = term->screen; top.y = -sblines(term); top.x = 0; - clipme(term, top, term->curs, 0, TRUE); + bottom.y = find_last_nonempty_line(term, screen); + bottom.x = term->cols; + clipme(term, top, bottom, 0, TRUE); } /*