diff options
author | nicm <nicm> | 2017-11-13 11:49:11 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-11-13 11:49:11 +0000 |
commit | d81fa579c34a2e198a7833740fca9b76092b2628 (patch) | |
tree | 44d59a3d135ee02464d0e7e6d323d5df5634ea52 /window-copy.c | |
parent | 384736e9550be328e0209c1f217b164d2fbc8fa1 (diff) |
When searching in copy mode, do not scroll if the result is already on
screen. GitHub issue 1150.
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 26 |
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); |