comparison lisp/modeline.el @ 259:11cf20601dec r20-5b28

Import from CVS: tag r20-5b28
author cvs
date Mon, 13 Aug 2007 10:23:02 +0200
parents 65c19d2020f7
children 727739f917cb
comparison
equal deleted inserted replaced
258:58424f6abf56 259:11cf20601dec
72 (let ((done nil) 72 (let ((done nil)
73 (depress-line (event-y event)) 73 (depress-line (event-y event))
74 (start-event-frame (event-frame event)) 74 (start-event-frame (event-frame event))
75 (start-event-window (event-window event)) 75 (start-event-window (event-window event))
76 (start-nwindows (count-windows t)) 76 (start-nwindows (count-windows t))
77 (hscroll-offset 77 (hscroll-delta (face-width 'modeline))
78 (- (modeline-hscroll (event-window event)) (event-x event))) 78 (start-hscroll (modeline-hscroll (event-window event)))
79 (start-x-pixel (event-x-pixel event))
79 (last-timestamp 0) 80 (last-timestamp 0)
80 default-line-height 81 default-line-height
81 modeline-height 82 modeline-height
82 should-enlarge-minibuffer 83 should-enlarge-minibuffer
83 event min-height minibuffer y top bot edges wconfig growth) 84 event min-height minibuffer y top bot edges wconfig growth)
129 (setq unread-command-events (nconc unread-command-events 130 (setq unread-command-events (nconc unread-command-events
130 (list event)) 131 (list event))
131 done t)) 132 done t))
132 ((button-release-event-p event) 133 ((button-release-event-p event)
133 (setq done t) 134 (setq done t)
134 (if modeline-click-swaps-buffers 135 ;; Consider we have a mouse click neither X pos (modeline
135 (mouse-release-modeline event depress-line))) 136 ;; scroll) nore Y pos (modeline drag) have changed.
137 (and modeline-click-swaps-buffers
138 (= depress-line (event-y event))
139 (= start-hscroll (modeline-hscroll start-event-window))
140 (modeline-swap-buffers event)))
136 ((button-event-p event) 141 ((button-event-p event)
137 (setq done t)) 142 (setq done t))
138 ((not (motion-event-p event)) 143 ((not (motion-event-p event))
139 (dispatch-event event)) 144 (dispatch-event event))
140 ((not (eq start-event-frame (event-frame event))) 145 ((not (eq start-event-frame (event-frame event)))
141 (setq done t)) 146 (setq done t))
142 ((< (abs (- (event-timestamp event) last-timestamp)) 147 ((< (abs (- (event-timestamp event) last-timestamp))
143 drag-modeline-event-lag) 148 drag-modeline-event-lag)
144 nil) 149 nil)
145 (t 150 (t
146 (set-modeline-hscroll (event-window event) 151 (set-modeline-hscroll start-event-window
147 (+ hscroll-offset (event-x event))) 152 (+ (/ (- (event-x-pixel event)
153 start-x-pixel)
154 hscroll-delta)
155 start-hscroll))
148 (setq last-timestamp (event-timestamp event) 156 (setq last-timestamp (event-timestamp event)
149 y (event-y-pixel event) 157 y (event-y-pixel event)
150 edges (window-pixel-edges start-event-window) 158 edges (window-pixel-edges start-event-window)
151 top (nth 1 edges) 159 top (nth 1 edges)
152 bot (nth 3 edges)) 160 bot (nth 3 edges))
199 (/= top (nth 1 (window-pixel-edges 207 (/= top (nth 1 (window-pixel-edges
200 start-event-window))))) 208 start-event-window)))))
201 (set-window-configuration wconfig)))))))) 209 (set-window-configuration wconfig))))))))
202 210
203 ;; from Bob Weiner (bob_weiner@pts.mot.com) 211 ;; from Bob Weiner (bob_weiner@pts.mot.com)
204 (defun mouse-release-modeline (event line-num) 212 ;; Whether this function should be called is now decided in
205 "Handle modeline click EVENT on LINE-NUM by switching buffers. 213 ;; mouse-drag-modeline - dverna feb. 98
214 (defun modeline-swap-buffers (event)
215 "Handle mouse clicks on modeline by switching buffers.
206 If click on left half of a frame's modeline, bury current buffer. 216 If click on left half of a frame's modeline, bury current buffer.
207 If click on right half of a frame's modeline, raise bottommost buffer. 217 If click on right half of a frame's modeline, raise bottommost buffer.
208 Args are: EVENT, the mouse release event, and LINE-NUM, the line number 218 Arg EVENT is the button release event that occured on the modeline."
209 within the frame at which the mouse was first depressed." 219 (or (event-over-modeline-p event)
210 (if (= line-num (event-y event)) 220 (error "not over a modeline"))
211 ;; Button press and release are at same line, treat this as 221 (or (button-release-event-p event)
212 ;; a click and switch buffers. 222 (error "not a button release event"))
213 (if (< (event-x event) (/ (window-width (event-window event)) 2)) 223 (if (< (event-x event) (/ (window-width (event-window event)) 2))
214 ;; On left half of modeline, bury current buffer, 224 ;; On left half of modeline, bury current buffer,
215 ;; displaying second buffer on list. 225 ;; displaying second buffer on list.
216 (mouse-bury-buffer event) 226 (mouse-bury-buffer event)
217 ;; On right half of modeline, raise and display bottommost 227 ;; On right half of modeline, raise and display bottommost
218 ;; buffer in buffer list. 228 ;; buffer in buffer list.
219 (mouse-unbury-buffer event)))) 229 (mouse-unbury-buffer event)))
220 230
221 (defconst modeline-menu 231 (defconst modeline-menu
222 '("Window Commands" 232 '("Window Commands"
223 ["Delete Window Above" delete-window t] 233 ["Delete Window Above" delete-window t]
224 ["Delete Other Windows" delete-other-windows t] 234 ["Delete Other Windows" delete-other-windows t]