aboutsummaryrefslogtreecommitdiff
path: root/window-copy.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2018-08-20 17:02:39 +0100
committerThomas Adam <thomas@xteddy.org>2018-08-20 17:02:39 +0100
commit098967a085c303543ac41543a4d33e7590341678 (patch)
tree0d44d8bba6c2af6a1e2d9850a17bc504811597ff /window-copy.c
parent641191ab2047d1437d46dc0ae787346b74fddca5 (diff)
parent665f04695063a3e83773b7b4d1d50ce4f9fab970 (diff)
downloadrtmux-098967a085c303543ac41543a4d33e7590341678.tar.gz
rtmux-098967a085c303543ac41543a4d33e7590341678.tar.bz2
rtmux-098967a085c303543ac41543a4d33e7590341678.zip
Merge branch 'obsd-master'
Diffstat (limited to 'window-copy.c')
-rw-r--r--window-copy.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/window-copy.c b/window-copy.c
index c2d9b9ad..5d533931 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -353,9 +353,6 @@ window_copy_pageup(struct window_pane *wp, int half_page)
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;
@@ -370,9 +367,13 @@ window_copy_pageup(struct window_pane *wp, int half_page)
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) {
@@ -397,9 +398,6 @@ window_copy_pagedown(struct window_pane *wp, int half_page, int scroll_exit)
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;
@@ -414,9 +412,13 @@ window_copy_pagedown(struct window_pane *wp, int half_page, int scroll_exit)
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) {