(mwheel-scroll): Make sure that when scrolling multiple

pages at a time, if we signal the end, we should indeed reach that end.
This commit is contained in:
Stefan Monnier 2006-05-08 15:14:26 +00:00
parent 8c87a72c22
commit 44a50ffdbf
2 changed files with 29 additions and 2 deletions

View file

@ -1,3 +1,13 @@
2006-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
* mwheel.el (mwheel-scroll): Make sure that when scrolling multiple
pages at a time, if we signal the end, we should indeed reach that end.
2006-05-08 David Reitter <david.reitter@gmail.com>
* emacs-lisp/easy-mmode.el (define-minor-mode): Only preserve messages
output during execution of the body.
2006-05-08 Kim F. Storm <storm@cua.dk>
* progmodes/grep.el (lgrep, rgrep): Doc fixes.

View file

@ -204,8 +204,25 @@ This should only be bound to mouse buttons 4 and 5."
(setq amt (* amt (event-click-count event))))
(unwind-protect
(let ((button (mwheel-event-button event)))
(cond ((eq button mouse-wheel-down-event) (scroll-down amt))
((eq button mouse-wheel-up-event) (scroll-up amt))
(cond ((eq button mouse-wheel-down-event)
(condition-case nil (scroll-down amt)
;; Make sure we do indeed scroll to the beginning of
;; the buffer.
(beginning-of-buffer
(unwind-protect
(scroll-down)
;; If the first scroll succeeded, then some scrolling
;; is possible: keep scrolling til the beginning but
;; do not signal an error. For some reason, we have
;; to do it even if the first scroll signalled an
;; error, because otherwise the window is recentered
;; for a reason that escapes me. This problem seems
;; to only affect scroll-down. --Stef
(set-window-start (selected-window) (point-min))))))
((eq button mouse-wheel-up-event)
(condition-case nil (scroll-up amt)
;; Make sure we do indeed scroll to the end of the buffer.
(end-of-buffer (while t (scroll-up)))))
(t (error "Bad binding in mwheel-scroll"))))
(if curwin (select-window curwin))))
(when (and mouse-wheel-click-event mouse-wheel-inhibit-click-time)