Fix bug #19060 with inaccurate pixel-based scrolling.
src/window.c (window_scroll_pixel_based): Avoid truncation/rounding errors in computing the number of pixels to scroll. Suggested by Kelly Dean <kelly@prtime.org>.
This commit is contained in:
parent
d4fceca9cd
commit
1fb97e79d2
2 changed files with 19 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-11-15 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* window.c (window_scroll_pixel_based): Avoid truncation/rounding
|
||||
errors in computing the number of pixels to scroll. Suggested by
|
||||
Kelly Dean <kelly@prtime.org>. (Bug#19060)
|
||||
|
||||
2014-11-15 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* nsmenu.m (update_frame_tool_bar): If tool bar changes height,
|
||||
|
|
17
src/window.c
17
src/window.c
|
@ -4955,9 +4955,14 @@ window_scroll_pixel_based (Lisp_Object window, int n, bool whole, int noerror)
|
|||
{
|
||||
int px;
|
||||
int dy = frame_line_height;
|
||||
/* In the below we divide the window box height by the
|
||||
frame's line height to make the result predictable when
|
||||
the window box is not an integral multiple of the line
|
||||
height. This is important to ensure we get back to the
|
||||
same position when scrolling up, then down. */
|
||||
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 +5044,12 @@ 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),
|
||||
/* In the below we divide the window box height by the frame's
|
||||
line height to make the result predictable when the window
|
||||
box is not an integral multiple of the line height. This is
|
||||
important to ensure we get back to the same position when
|
||||
scrolling up, then down. */
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue