summaryrefslogtreecommitdiff
path: root/lisp/follow.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@gnu.org>2012-05-01 22:00:16 +0800
committerChong Yidong <cyd@gnu.org>2012-05-01 22:00:16 +0800
commit87233a14e07a61981e3ce51350efb8b7ee5adcd2 (patch)
tree14a8b741405ff84235334fc5f483ae891d5168ad /lisp/follow.el
parent782fbf2a338e61231655e76b1727790374e02ca1 (diff)
downloademacs-87233a14e07a61981e3ce51350efb8b7ee5adcd2.tar.gz
Fix mouse wheel scrolling in Follow mode.
* lisp/follow.el (follow-mwheel-scroll): New function. (follow-redraw-after-event): Fix last change. Fixes: debbugs:4112
Diffstat (limited to 'lisp/follow.el')
-rw-r--r--lisp/follow.el18
1 files changed, 13 insertions, 5 deletions
diff --git a/lisp/follow.el b/lisp/follow.el
index 53dd4c2c354..4c76b43da2d 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -258,6 +258,7 @@ After that, changing the prefix key requires manipulating keymaps."
(define-key mainmap [remap scroll-bar-drag] 'follow-scroll-bar-drag)
(define-key mainmap [remap scroll-bar-scroll-up] 'follow-scroll-bar-scroll-up)
(define-key mainmap [remap scroll-bar-scroll-down] 'follow-scroll-bar-scroll-down)
+ (define-key mainmap [remap mwheel-scroll] 'follow-mwheel-scroll)
mainmap)
"Minor mode keymap for Follow mode.")
@@ -1315,17 +1316,24 @@ non-first windows in Follow mode."
(scroll-bar-scroll-down event)
(follow-redraw-after-event event))
+(defun follow-mwheel-scroll (event)
+ (interactive "e")
+ (mwheel-scroll event)
+ (follow-redraw-after-event event))
+
(defun follow-redraw-after-event (event)
- "Re-align the Follow mode windows acted on by EVENT."
- (let ((window (nth 0 (event-end event)))
- (orig-win (selected-window)))
- (when (and (buffer-local-value 'follow-mode (window-buffer window))
+ "Re-align the Follow mode windows affected by EVENT."
+ (let* ((window (nth 0 (event-end event)))
+ (buffer (window-buffer window))
+ (orig-win (selected-window)))
+ (when (and (buffer-local-value 'follow-mode buffer)
;; Ignore the case where we scroll the selected window;
;; that is handled by the post-command hook function.
(not (eq window (selected-window))))
(select-window window)
(follow-redisplay)
- (select-window orig-win))))
+ (unless (eq (window-buffer orig-win) buffer)
+ (select-window orig-win)))))
;;; Window size change