comparison lisp/scroll-bar.el @ 1981:bde0ca7e33b3

Use the term `scroll bar', instead of `scrollbar'. * term/x-win.el, frame.el, mouse.el: Terminology changed. * scrollbar.el: Renamed to scroll-bar.el.
author Jim Blandy <jimb@redhat.com>
date Tue, 02 Mar 1993 07:29:47 +0000
parents 3a08dacd8bfb
children 4f9d60f7de9d
comparison
equal deleted inserted replaced
1980:263033210413 1981:bde0ca7e33b3
1 ;;; scrollbar.el -- window system-independent scrollbar support. 1 ;;; scroll-bar.el -- window system-independent scroll bar support.
2 2
3 ;;; Copyright (C) 1993 Free Software Foundation, Inc. 3 ;;; Copyright (C) 1993 Free Software Foundation, Inc.
4 4
5 ;; Maintainer: FSF 5 ;; Maintainer: FSF
6 ;; Keywords: hardware 6 ;; Keywords: hardware
24 (require 'mouse) 24 (require 'mouse)
25 25
26 26
27 ;;;; Utilities. 27 ;;;; Utilities.
28 28
29 (defun scrollbar-scale (num-denom whole) 29 (defun scroll-bar-scale (num-denom whole)
30 "Given a pair (NUM . DENOM) and WHOLE, return (/ (* NUM WHOLE) DENOM). 30 "Given a pair (NUM . DENOM) and WHOLE, return (/ (* NUM WHOLE) DENOM).
31 This is handy for scaling a position on a scrollbar into real units, 31 This is handy for scaling a position on a scroll bar into real units,
32 like buffer positions. If SCROLLBAR-POS is the (PORTION . WHOLE) pair 32 like buffer positions. If SCROLL-BAR-POS is the (PORTION . WHOLE) pair
33 from a scrollbar event, then (scrollbar-scale SCROLLBAR-POS 33 from a scroll bar event, then (scroll-bar-scale SCROLL-BAR-POS
34 \(buffer-size)) is the position in the current buffer corresponding to 34 \(buffer-size)) is the position in the current buffer corresponding to
35 that scrollbar position." 35 that scroll bar position."
36 ;; We multiply before we divide to maintain precision. 36 ;; We multiply before we divide to maintain precision.
37 ;; We use floating point because the product of a large buffer size 37 ;; We use floating point because the product of a large buffer size
38 ;; with a large scrollbar portion can easily overflow a lisp int. 38 ;; with a large scroll bar portion can easily overflow a lisp int.
39 (truncate (/ (* (float (car num-denom)) whole) (cdr num-denom)))) 39 (truncate (/ (* (float (car num-denom)) whole) (cdr num-denom))))
40 40
41 41
42 ;;;; Helpful functions for enabling and disabling scroll bars. 42 ;;;; Helpful functions for enabling and disabling scroll bars.
43 (defvar scroll-bar-mode nil) 43 (defvar scroll-bar-mode nil)
58 (if (consp parameter) 58 (if (consp parameter)
59 (setcdr parameter scroll-bar-mode) 59 (setcdr parameter scroll-bar-mode)
60 (setq default-frame-alist 60 (setq default-frame-alist
61 (cons (cons param-name scroll-bar-mode) 61 (cons (cons param-name scroll-bar-mode)
62 default-frame-alist)))))) 62 default-frame-alist))))))
63 '(vertical-scrollbars horizontal-scrollbars)) 63 '(vertical-scroll-bars horizontal-scroll-bars))
64 (let ((frames (frame-list))) 64 (let ((frames (frame-list)))
65 (while frames 65 (while frames
66 (modify-frame-parameters 66 (modify-frame-parameters
67 (car frames) 67 (car frames)
68 (list (cons 'vertical-scrollbars scroll-bar-mode) 68 (list (cons 'vertical-scroll-bars scroll-bar-mode)
69 (cons 'horizontal-scrollbars scroll-bar-mode))) 69 (cons 'horizontal-scroll-bars scroll-bar-mode)))
70 (setq frames (cdr frames))))) 70 (setq frames (cdr frames)))))
71 71
72 ;;;; Buffer navigation using the scrollbar. 72 ;;;; Buffer navigation using the scroll bar.
73 73
74 (defun scrollbar-set-window-start (event) 74 (defun scroll-bar-set-window-start (event)
75 "Set the window start according to where the scrollbar is dragged. 75 "Set the window start according to where the scroll bar is dragged.
76 EVENT should be a scrollbar click or drag event." 76 EVENT should be a scroll bar click or drag event."
77 (interactive "e") 77 (interactive "e")
78 (let* ((end-position (event-end event)) 78 (let* ((end-position (event-end event))
79 (window (nth 0 end-position)) 79 (window (nth 0 end-position))
80 (portion-whole (nth 2 end-position))) 80 (portion-whole (nth 2 end-position)))
81 (save-excursion 81 (save-excursion
82 (set-buffer (window-buffer window)) 82 (set-buffer (window-buffer window))
83 (save-excursion 83 (save-excursion
84 (goto-char (scrollbar-scale portion-whole (buffer-size))) 84 (goto-char (scroll-bar-scale portion-whole (buffer-size)))
85 (beginning-of-line) 85 (beginning-of-line)
86 (set-window-start window (point)))))) 86 (set-window-start window (point))))))
87 87
88 (defun scrollbar-scroll-down (event) 88 (defun scroll-bar-scroll-down (event)
89 "Scroll the window's top line down to the location of the scrollbar click. 89 "Scroll the window's top line down to the location of the scroll bar click.
90 EVENT should be a scrollbar click." 90 EVENT should be a scroll bar click."
91 (interactive "e") 91 (interactive "e")
92 (let ((old-selected-window (selected-window))) 92 (let ((old-selected-window (selected-window)))
93 (unwind-protect 93 (unwind-protect
94 (progn 94 (progn
95 (let* ((end-position (event-end event)) 95 (let* ((end-position (event-end event))
96 (window (nth 0 end-position)) 96 (window (nth 0 end-position))
97 (portion-whole (nth 2 end-position))) 97 (portion-whole (nth 2 end-position)))
98 (select-window window) 98 (select-window window)
99 (scroll-down 99 (scroll-down
100 (scrollbar-scale portion-whole (1- (window-height)))))) 100 (scroll-bar-scale portion-whole (1- (window-height))))))
101 (select-window old-selected-window)))) 101 (select-window old-selected-window))))
102 102
103 (defun scrollbar-scroll-up (event) 103 (defun scroll-bar-scroll-up (event)
104 "Scroll the line next to the scrollbar click to the top of the window. 104 "Scroll the line next to the scroll bar click to the top of the window.
105 EVENT should be a scrollbar click." 105 EVENT should be a scroll bar click."
106 (interactive "e") 106 (interactive "e")
107 (let ((old-selected-window (selected-window))) 107 (let ((old-selected-window (selected-window)))
108 (unwind-protect 108 (unwind-protect
109 (progn 109 (progn
110 (let* ((end-position (event-end event)) 110 (let* ((end-position (event-end event))
111 (window (nth 0 end-position)) 111 (window (nth 0 end-position))
112 (portion-whole (nth 2 end-position))) 112 (portion-whole (nth 2 end-position)))
113 (select-window window) 113 (select-window window)
114 (scroll-up 114 (scroll-up
115 (scrollbar-scale portion-whole (1- (window-height)))))) 115 (scroll-bar-scale portion-whole (1- (window-height))))))
116 (select-window old-selected-window)))) 116 (select-window old-selected-window))))
117 117
118 118
119 ;;;; Bindings. 119 ;;;; Bindings.
120 120
121 ;;; For now, we'll set things up to work like xterm. 121 ;;; For now, we'll set things up to work like xterm.
122 (global-set-key [vertical-scrollbar mouse-1] 'scrollbar-scroll-up) 122 (global-set-key [vertical-scroll-bar mouse-1] 'scroll-bar-scroll-up)
123 (global-set-key [vertical-scrollbar drag-mouse-1] 'scrollbar-scroll-up) 123 (global-set-key [vertical-scroll-bar drag-mouse-1] 'scroll-bar-scroll-up)
124 124
125 (global-set-key [vertical-scrollbar mouse-2] 'scrollbar-set-window-start) 125 (global-set-key [vertical-scroll-bar mouse-2] 'scroll-bar-set-window-start)
126 (global-set-key [vertical-scrollbar drag-mouse-2] 'scrollbar-set-window-start) 126 (global-set-key [vertical-scroll-bar drag-mouse-2] 'scroll-bar-set-window-start)
127 127
128 (global-set-key [vertical-scrollbar mouse-3] 'scrollbar-scroll-down) 128 (global-set-key [vertical-scroll-bar mouse-3] 'scroll-bar-scroll-down)
129 (global-set-key [vertical-scrollbar drag-mouse-3] 'scrollbar-scroll-down) 129 (global-set-key [vertical-scroll-bar drag-mouse-3] 'scroll-bar-scroll-down)
130 130
131 131
132 (provide 'scroll-bar) 132 (provide 'scroll-bar)
133 133
134 ;;; scrollbar.el ends here 134 ;;; scroll-bar.el ends here