comparison lisp/mouse.el @ 249:83b3d10dcba9 r20-5b23

Import from CVS: tag r20-5b23
author cvs
date Mon, 13 Aug 2007 10:19:09 +0200
parents f220cc83d72e
children 084402c475ba
comparison
equal deleted inserted replaced
248:ad40ac2754d8 249:83b3d10dcba9
40 (global-set-key '(control shift button1) 'mouse-track-delete-and-insert) 40 (global-set-key '(control shift button1) 'mouse-track-delete-and-insert)
41 (global-set-key '(meta button1) 'mouse-track-do-rectangle) 41 (global-set-key '(meta button1) 'mouse-track-do-rectangle)
42 42
43 ;; enable drag regions (ograf@fga.de) 43 ;; enable drag regions (ograf@fga.de)
44 ;; if button2 is dragged from within a region, this becomes a drop 44 ;; if button2 is dragged from within a region, this becomes a drop
45 (if (featurep '(or offix cde)) 45 (if (featurep '(or offix cde mswindows))
46 (global-set-key 'button2 'mouse-drag-or-yank) 46 (global-set-key 'button2 'mouse-drag-or-yank)
47 (global-set-key 'button2 'mouse-yank)) 47 (global-set-key 'button2 'mouse-yank))
48 48
49 ;; enable drops from OffiX (ograf@fga.de) 49 ;; enable drops from OffiX (ograf@fga.de) or mswindows
50 ;; accept any button1,2,3 drop with `mouse-offix-drop' 50 ;; accept any button1,2,3 drop with `mouse-offix-drop' or 'mswindows-mouse-drop'
51 (cond ((featurep 'offix) 51 (cond ((featurep 'offix)
52 (global-set-key 'drop1 'mouse-offix-drop) 52 (global-set-key 'drop1 'mouse-offix-drop)
53 (global-set-key 'drop2 'mouse-offix-drop) 53 (global-set-key 'drop2 'mouse-offix-drop)
54 (global-set-key 'drop3 'mouse-offix-drop))) 54 (global-set-key 'drop3 'mouse-offix-drop))
55 ((featurep 'mswindows)
56 (global-set-key 'drop0 'mouse-mswindows-drop)
57 (global-set-key 'drop1 'mouse-mswindows-drop)
58 (global-set-key 'drop2 'mouse-mswindows-drop)
59 (global-set-key 'drop3 'mouse-mswindows-drop)))
55 60
56 (defgroup mouse nil 61 (defgroup mouse nil
57 "Window system-independent mouse support." 62 "Window system-independent mouse support."
58 :group 'editing) 63 :group 'editing)
59 64
236 (let ((buf (generate-new-buffer "DndMIME"))) 241 (let ((buf (generate-new-buffer "DndMIME")))
237 (set-buffer buf) 242 (set-buffer buf)
238 (pop-to-buffer buf nil frame) 243 (pop-to-buffer buf nil frame)
239 (insert data) 244 (insert data)
240 (make-frame-visible frame))) 245 (make-frame-visible frame)))
246 (t ;; this is raw data or unknown stuff
247 (let ((buf (generate-new-buffer "DndRawData")))
248 (set-buffer buf)
249 (pop-to-buffer buf nil frame)
250 (insert data)
251 (hexlify-buffer)
252 (make-frame-visible frame))))
253 (undo-boundary)))
254
255 (defun mouse-mswindows-drop (event)
256 "Do something with a drop event. Inserts Text drops and
257 executes appropriate commands for specific drops.
258 Text drops follow the `mouse-yank-at-point' variable."
259 (interactive "e")
260 (let* ((type (car (event-drag-and-drop-data event)))
261 (data (cadr (event-drag-and-drop-data event)))
262 (frame (event-channel event))
263 (window (if frame (event-window event) (frame-selected-window))))
264 (cond ((= type 2) ;; file
265 (let ((x pop-up-windows))
266 (setq pop-up-windows nil)
267 (cond (window
268 (select-window window)))
269 (switch-to-buffer (find-file-noselect data))
270 (make-frame-visible frame)
271 (setq pop-up-windows x)))
272 ((= type 3) ;; files
273 (let ((x pop-up-windows))
274 (setq pop-up-windows nil)
275 (while (not (eq data ()))
276 (pop-to-buffer (find-file-noselect (car data)) nil frame)
277 (setq data (cdr data)))
278 (make-frame-visible frame)
279 (setq pop-up-windows x)))
280 ((= type 4) ;; text
281 (and (not mouse-yank-at-point)
282 (mouse-set-point event))
283 (insert data))
241 (t ;; this is raw data or unknown stuff 284 (t ;; this is raw data or unknown stuff
242 (let ((buf (generate-new-buffer "DndRawData"))) 285 (let ((buf (generate-new-buffer "DndRawData")))
243 (set-buffer buf) 286 (set-buffer buf)
244 (pop-to-buffer buf nil frame) 287 (pop-to-buffer buf nil frame)
245 (insert data) 288 (insert data)