# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: benrwhite@gmail.com-20101010140926-r6g5g6d7o9s85cgo # target_branch: http://bzr.savannah.gnu.org/r/emacs/trunk # testament_sha1: be306a8c74d88c7c60c045fb1442688c981f4cdc # timestamp: 2010-10-10 21:06:34 +0100 # base_revision_id: dann@ics.uci.edu-20101010134422-ib3bgfpbqus51h0e # # Begin patch === modified file 'lisp/image-mode.el' --- lisp/image-mode.el 2010-09-24 03:06:33 +0000 +++ lisp/image-mode.el 2010-10-07 19:31:46 +0000 @@ -290,6 +290,48 @@ (set-frame-width (selected-frame) (car size)) (set-frame-height (selected-frame) (cdr size)))) +(defun image-mouse-scroll-position (start-event) + "When bound to a down-mouse-X input START-EVENT, will smoothly +drag the viewpoint on the image buffer that the window displays." + (interactive "e") + (let* ((echo-keystrokes 0) + (start-posn (event-start start-event)) + (x-offset (window-hscroll (car start-posn))) + (y-offset (window-vscroll (car start-posn) t)) + (imframe-cwidth (frame-char-width + (window-frame (car start-posn)))) + (startpos (nth 8 start-posn)) + event now-posn nowpos x-diff y-diff ) + (select-window (posn-window start-posn)) + (track-mouse + (while (progn + ;; as used in mouse.el:mouse-drag-track + (setq event (read-event)) + (or (mouse-movement-p event) + (memq (car-safe event) '(switch-frame select-window)))) + (setq now-posn (event-start event)) + ;; check if drag is within image on frame + (if (and (eq (nth 7 start-posn) (nth 7 now-posn)) + (eq (nth 1 start-posn) (nth 1 now-posn))) + (progn + (setq nowpos (nth 8 now-posn)) + (setq x-diff (- (car startpos) (car nowpos))) + (setq y-diff (- (cdr startpos) (cdr nowpos))) + + (set-window-vscroll (nth 0 start-posn) + (+ y-offset y-diff) t) + (if (< (/ imframe-cwidth 2) + (abs x-diff)) + (set-window-hscroll + (car start-posn) + (+ x-offset + (/ (if (> x-diff 0) + (+ x-diff (/ imframe-cwidth 2)) + (- x-diff (/ imframe-cwidth 2))) + imframe-cwidth)))) + (setq x-offset (window-hscroll (car now-posn))) + (setq y-offset (window-vscroll (car now-posn) t)))))))) + ;;; Image Mode setup (defvar image-type nil @@ -321,6 +363,7 @@ (define-key map [remap move-end-of-line] 'image-eol) (define-key map [remap beginning-of-buffer] 'image-bob) (define-key map [remap end-of-buffer] 'image-eob) + (define-key map [down-mouse-2] 'image-mouse-scroll-position) map) "Major mode keymap for viewing images in Image mode.") # Begin bundle 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