summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2017-11-13 11:49:11 +0000
committernicm <nicm@openbsd.org>2017-11-13 11:49:11 +0000
commitb23ea93044a84fbfe30789512722b4b7c8edd2a7 (patch)
tree2fcbea442afb2b18e6a6e5fbee31a9a75fe53ad7
parentadd a generic packet rate matching filter. allows things like (diff)
downloadwireguard-openbsd-b23ea93044a84fbfe30789512722b4b7c8edd2a7.tar.xz
wireguard-openbsd-b23ea93044a84fbfe30789512722b4b7c8edd2a7.zip
When searching in copy mode, do not scroll if the result is already on
screen. GitHub issue 1150.
-rw-r--r--usr.bin/tmux/window-copy.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/usr.bin/tmux/window-copy.c b/usr.bin/tmux/window-copy.c
index 87275afb60b..8f1379b2e60 100644
--- a/usr.bin/tmux/window-copy.c
+++ b/usr.bin/tmux/window-copy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: window-copy.c,v 1.184 2017/09/13 07:31:07 nicm Exp $ */
+/* $OpenBSD: window-copy.c,v 1.185 2017/11/13 11:49:11 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -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);