summaryrefslogtreecommitdiffstats
path: root/window-copy.c
diff options
context:
space:
mode:
authornicm <nicm>2017-11-13 11:49:11 +0000
committernicm <nicm>2017-11-13 11:49:11 +0000
commitd81fa579c34a2e198a7833740fca9b76092b2628 (patch)
tree44d59a3d135ee02464d0e7e6d323d5df5634ea52 /window-copy.c
parent384736e9550be328e0209c1f217b164d2fbc8fa1 (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.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);