]> granicus.if.org Git - neomutt/commitdiff
make OP_HALF_{UP,DOWN} behave symmetric.
authorSebastian Stark <sstark@mailbox.org>
Sun, 26 May 2019 08:04:58 +0000 (10:04 +0200)
committerRichard Russon <rich@flatcap.org>
Sun, 26 May 2019 16:31:33 +0000 (17:31 +0100)
  - the calculation of number of lines to scroll up/down should not
  depend on whether the number of rows in the pager/index/terminal is
  odd or even.
  - this patch will make the behaviour symmetric such that in both cases
  (even/odd number of rows) scrolling up and down by half a page (or the
  other way round) will get you back to the exact same line as before.

pager.c

diff --git a/pager.c b/pager.c
index 3d7048102773e6fc869ec55fe31e1dc3d418d514..56e192345acb245d6aaa5e1ad8e35a0c3d090bb5 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -2573,8 +2573,8 @@ int mutt_pager(const char *banner, const char *fname, PagerFlags flags, struct P
       case OP_HALF_UP:
         if (rd.topline)
         {
-          rd.topline = up_n_lines(rd.pager_window->rows / 2, rd.line_info,
-                                  rd.topline, rd.hide_quoted);
+          rd.topline = up_n_lines(rd.pager_window->rows / 2 + (rd.pager_window->rows % 2),
+                                  rd.line_info, rd.topline, rd.hide_quoted);
         }
         else
           mutt_error(_("Top of message is shown"));