# HG changeset patch # User Richard M. Stallman # Date 736904957 0 # Node ID 6940c6b5d988b66b0d9516f077647013e6d30eb9 # Parent 05ff97695d328840ce6e142303f9ced8106bc1af (scroll-bar-drag, scroll-bar-drag-1): New functions. Put scroll-bar-drag on down-mouse-2 in scroll bar. Leave up-events on mouse-2 unbound. diff -r 05ff97695d32 -r 6940c6b5d988 lisp/scroll-bar.el --- a/lisp/scroll-bar.el Sat May 08 22:38:37 1993 +0000 +++ b/lisp/scroll-bar.el Sat May 08 23:49:17 1993 +0000 @@ -79,6 +79,7 @@ ;;;; Buffer navigation using the scroll bar. +;;; This was used for up-events on button 2, but no longer. (defun scroll-bar-set-window-start (event) "Set the window start according to where the scroll bar is dragged. EVENT should be a scroll bar click or drag event." @@ -93,6 +94,34 @@ (beginning-of-line) (set-window-start window (point)))))) +;; Scroll the window to the proper position for EVENT. +(defun scroll-bar-drag-1 (event) + (let* ((start-position (event-start event)) + (window (nth 0 start-position)) + (portion-whole (nth 2 start-position))) + (save-excursion + (set-buffer (window-buffer window)) + (goto-char (scroll-bar-scale portion-whole (buffer-size))) + (beginning-of-line) + (set-window-start window (point))))) + +(defun scroll-bar-drag (event) + "Scroll the window by dragging the scroll bar slider. +If you click outside the slider, the window scrolls to bring the slider there." + (interactive "e") + (let* (done) + (scroll-bar-drag-1 event) + (track-mouse + (while (not done) + (setq event (read-event)) + (if (eq (car-safe event) 'mouse-movement) + (setq event (read-event))) + (cond ((eq (car-safe event) 'scroll-bar-movement) + (scroll-bar-drag-1 event)) + (t + ;; Exit when we get the drag event; ignore that event. + (setq done t))))))) + (defun scroll-bar-scroll-down (event) "Scroll the window's top line down to the location of the scroll bar click. EVENT should be a scroll bar click." @@ -130,9 +159,8 @@ (global-set-key [vertical-scroll-bar mouse-1] 'scroll-bar-scroll-up) (global-set-key [vertical-scroll-bar drag-mouse-1] 'scroll-bar-scroll-up) -(global-set-key [vertical-scroll-bar mouse-2] 'scroll-bar-set-window-start) -(global-set-key [vertical-scroll-bar drag-mouse-2] 'scroll-bar-set-window-start) - +(global-set-key [vertical-scroll-bar down-mouse-2] 'scroll-bar-drag) + (global-set-key [vertical-scroll-bar mouse-3] 'scroll-bar-scroll-down) (global-set-key [vertical-scroll-bar drag-mouse-3] 'scroll-bar-scroll-down)