aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--window-copy.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/window-copy.c b/window-copy.c
index 09ccc26c..b804ffeb 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -955,18 +955,22 @@ window_copy_scroll_to(struct window_pane *wp, u_int px, u_int py)
data->cx = px;
- gap = gd->sy / 4;
- if (py < gd->sy) {
- offset = 0;
- data->cy = py;
- } else if (py > gd->hsize + gd->sy - gap) {
- offset = gd->hsize;
- data->cy = py - gd->hsize;
- } else {
- offset = py + gap - gd->sy;
- data->cy = py - offset;
+ if (py >= gd->hsize - data->oy && py < gd->hsize - data->oy + gd->sy)
+ data->cy = py - (gd->hsize - data->oy);
+ else {
+ gap = gd->sy / 4;
+ if (py < gd->sy) {
+ offset = 0;
+ data->cy = py;
+ } else if (py > gd->hsize + gd->sy - gap) {
+ offset = gd->hsize;
+ data->cy = py - gd->hsize;
+ } else {
+ offset = py + gap - gd->sy;
+ data->cy = py - offset;
+ }
+ data->oy = gd->hsize - offset;
}
- data->oy = gd->hsize - offset;
window_copy_update_selection(wp, 1);
window_copy_redraw_screen(wp);