From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#19060: [FIX INCLUDED] Off-by-one-line scrolling bug in window_scroll_pixel_based Date: Sat, 15 Nov 2014 12:13:17 +0100 Message-ID: <5467354D.3000600@gmx.at> References: <83wq6wg6fq.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1416050077 7709 80.91.229.3 (15 Nov 2014 11:14:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 15 Nov 2014 11:14:37 +0000 (UTC) Cc: 19060@debbugs.gnu.org To: Eli Zaretskii , Kelly Dean Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Nov 15 12:14:30 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XpbJF-00029n-UH for geb-bug-gnu-emacs@m.gmane.org; Sat, 15 Nov 2014 12:14:30 +0100 Original-Received: from localhost ([::1]:39849 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XpbJF-0008AS-G8 for geb-bug-gnu-emacs@m.gmane.org; Sat, 15 Nov 2014 06:14:29 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XpbJ2-0007uT-9j for bug-gnu-emacs@gnu.org; Sat, 15 Nov 2014 06:14:26 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XpbIr-0004ES-3X for bug-gnu-emacs@gnu.org; Sat, 15 Nov 2014 06:14:16 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:36074) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XpbIr-0004E4-0c for bug-gnu-emacs@gnu.org; Sat, 15 Nov 2014 06:14:05 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XpbIo-0007QD-JT for bug-gnu-emacs@gnu.org; Sat, 15 Nov 2014 06:14:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 15 Nov 2014 11:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19060 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 19060-submit@debbugs.gnu.org id=B19060.141605001728489 (code B ref 19060); Sat, 15 Nov 2014 11:14:02 +0000 Original-Received: (at 19060) by debbugs.gnu.org; 15 Nov 2014 11:13:37 +0000 Original-Received: from localhost ([127.0.0.1]:33287 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XpbIO-0007PQ-Rw for submit@debbugs.gnu.org; Sat, 15 Nov 2014 06:13:37 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]:64583) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XpbIM-0007PF-6O for 19060@debbugs.gnu.org; Sat, 15 Nov 2014 06:13:35 -0500 Original-Received: from [178.190.161.208] ([178.190.161.208]) by mail.gmx.com (mrgmx002) with ESMTPSA (Nemesis) id 0Mb7lL-1XZSFp3kB1-00KkxX; Sat, 15 Nov 2014 12:13:27 +0100 In-Reply-To: <83wq6wg6fq.fsf@gnu.org> X-Provags-ID: V03:K0:VX5xDUf1M2nMUc/9In1kO5mG997uQZzMBxc2ttNw1xiic0Q3IoP H4bGCobxvnRe5MVMvAkxyzGNgXsGqIPQTTrRp3fbN+zSnkiSgKB0iJ1tM6asb5WXaQkfKvd VPXAFJyQFV0M8zoHG0ZHEHxUtBPnze5hB4ca7uB0vYAJy57+i1T6QOSEp2DmgMpGumxMwiF u4vnwfqTdc9o6gUFjDkHQ== X-UI-Out-Filterresults: notjunk:1; X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:96053 First of all many thanks to Kelly Dean for finding the problem and proposing a solution. > Martin, I propose the following patch: > > diff --git a/src/window.c b/src/window.c > index b002423..7462fdc 100644 > --- a/src/window.c > +++ b/src/window.c > @@ -4956,8 +4956,8 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror) > int px; > int dy = frame_line_height; > if (whole) > - dy = max ((window_box_height (w) > - - next_screen_context_lines * dy), > + dy = max ((window_box_height (w) / dy > + - next_screen_context_lines) * dy, > dy); > dy *= n; > > @@ -5039,8 +5039,7 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror) > { > ptrdiff_t start_pos = IT_CHARPOS (it); > int dy = frame_line_height; > - dy = max ((window_box_height (w) > - - next_screen_context_lines * dy), > + dy = max ((window_box_height (w) / dy - next_screen_context_lines) * dy, > dy) * n; > > /* Note that move_it_vertically always moves the iterator to the If it works for you, please apply it. I'm too silly to understand it, though. IIUC we have a rounding issue which makes us go by one line too far or too few when scrolling up and your patch compensates that rounding issue by putting it back into that window_box_height (w) / dy calculation. Could you add comments which tell more or less how you corrected the issue? Thanks, martin