-/* $OpenBSD: window-copy.c,v 1.194 2018/08/05 08:59:30 nicm Exp $ */
+/* $OpenBSD: window-copy.c,v 1.195 2018/08/20 13:51:09 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
oy = screen_hsize(data->backing) + data->cy - data->oy;
ox = window_copy_find_length(wp, oy);
- if (data->lineflag == LINE_SEL_LEFT_RIGHT && oy == data->sely)
- window_copy_other_end(wp);
-
if (data->cx != ox) {
data->lastcx = data->cx;
data->lastsx = ox;
n = screen_size_y(s) - 2;
}
- if (data->oy + n > screen_hsize(data->backing))
+ if (data->oy + n > screen_hsize(data->backing)) {
data->oy = screen_hsize(data->backing);
- else
+ if (data->cy < n)
+ data->cy = 0;
+ else
+ data->cy -= n;
+ } else
data->oy += n;
if (data->screen.sel == NULL || !data->rectflag) {
oy = screen_hsize(data->backing) + data->cy - data->oy;
ox = window_copy_find_length(wp, oy);
- if (data->lineflag == LINE_SEL_RIGHT_LEFT && oy == data->sely)
- window_copy_other_end(wp);
-
if (data->cx != ox) {
data->lastcx = data->cx;
data->lastsx = ox;
n = screen_size_y(s) - 2;
}
- if (data->oy < n)
+ if (data->oy < n) {
data->oy = 0;
- else
+ if (data->cy + (n - data->oy) >= screen_size_y(data->backing))
+ data->cy = screen_size_y(data->backing) - 1;
+ else
+ data->cy += n - data->oy;
+ } else
data->oy -= n;
if (data->screen.sel == NULL || !data->rectflag) {