summaryrefslogtreecommitdiff
path: root/lisp/term
diff options
context:
space:
mode:
authorKarl Heuer <kwzh@gnu.org>1996-05-21 14:40:56 +0000
committerKarl Heuer <kwzh@gnu.org>1996-05-21 14:40:56 +0000
commit75fba8f8c0671f0638353121e27d376d9fcb58a6 (patch)
treeea863a5cd1450f78c5b1619c2ba8ccc0272d1e02 /lisp/term
parent816d81fd7b4d0865d056a242888d49c6a75ceed0 (diff)
downloademacs-75fba8f8c0671f0638353121e27d376d9fcb58a6.tar.gz
(win32-handle-scroll-bar-event): Restore
original window selection after scrolling.
Diffstat (limited to 'lisp/term')
-rw-r--r--lisp/term/w32-win.el39
1 files changed, 21 insertions, 18 deletions
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index d5da3ab9f7e..559075cf313 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -84,24 +84,27 @@
(defun win32-handle-scroll-bar-event (event)
"Handle Win32 scroll bar events to do normal Window style scrolling."
(interactive "e")
- (let* ((position (event-start event))
- (window (nth 0 position))
- (portion-whole (nth 2 position))
- (bar-part (nth 4 position)))
- (save-excursion
- (select-window window)
- (cond
- ((eq bar-part 'up)
- (scroll-down 1))
- ((eq bar-part 'above-handle)
- (scroll-down))
- ((eq bar-part 'handle)
- (scroll-bar-maybe-set-window-start event))
- ((eq bar-part 'below-handle)
- (scroll-up))
- ((eq bar-part 'down)
- (scroll-up 1))
- ))))
+ (let ((old-window (selected-window)))
+ (unwind-protect
+ (let* ((position (event-start event))
+ (window (nth 0 position))
+ (portion-whole (nth 2 position))
+ (bar-part (nth 4 position)))
+ (save-excursion
+ (select-window window)
+ (cond
+ ((eq bar-part 'up)
+ (scroll-down 1))
+ ((eq bar-part 'above-handle)
+ (scroll-down))
+ ((eq bar-part 'handle)
+ (scroll-bar-maybe-set-window-start event))
+ ((eq bar-part 'below-handle)
+ (scroll-up))
+ ((eq bar-part 'down)
+ (scroll-up 1))
+ )))
+ (select-window old-window))))
;; The following definition is used for debugging.
;(defun win32-handle-scroll-bar-event (event) (interactive "e") (princ event))