changeset 70528:c8171c0fa382

(mwheel-scroll): Make sure that when scrolling multiple pages at a time, if we signal the end, we should indeed reach that end.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 08 May 2006 15:14:26 +0000
parents 4fc3abab0f17
children 1a9cbaf1fc03
files lisp/ChangeLog lisp/mwheel.el
diffstat 2 files changed, 29 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon May 08 15:12:25 2006 +0000
+++ b/lisp/ChangeLog	Mon May 08 15:14:26 2006 +0000
@@ -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.
--- a/lisp/mwheel.el	Mon May 08 15:12:25 2006 +0000
+++ b/lisp/mwheel.el	Mon May 08 15:14:26 2006 +0000
@@ -204,8 +204,25 @@
       (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)