X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e9bffc61f201755de9ed46ef389379a9028f68e7..5811404f0b86c9fa92c3e0b22505a9bb05f04145:/lisp/mouse-drag.el diff --git a/lisp/mouse-drag.el b/lisp/mouse-drag.el index 51f4612d68..e46ea00d7e 100644 --- a/lisp/mouse-drag.el +++ b/lisp/mouse-drag.el @@ -1,7 +1,6 @@ ;;; mouse-drag.el --- use mouse-2 to do a new style of scrolling -;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -;; 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2001-2016 Free Software Foundation, Inc. ;; Author: John Heidemann ;; Keywords: mouse @@ -47,7 +46,7 @@ ;; If you like mouse-drag, you should also check out mouse-copy ;; for ``one-click text copy and move''. ;; -;; To use mouse-drag, place the following in your .emacs file: +;; To use mouse-drag, place the following in your init file: ;; -either- ;; (global-set-key [down-mouse-2] 'mouse-drag-throw) ;; -or- @@ -157,7 +156,7 @@ Keep the cursor on the screen as needed." "Determine if it's wise to enable col-scrolling for the current window. Basically, we check for existing horizontal scrolling." (or truncate-lines - (> (window-hscroll (selected-window)) 0) + (> (window-hscroll) 0) (not (window-full-width-p)) (and mouse-drag-electric-col-scrolling @@ -170,7 +169,7 @@ Basically, we check for existing horizontal scrolling." nil)))))) (defvar mouse-throw-with-scroll-bar nil - "*Set direction of mouse-throwing. + "Set direction of mouse-throwing. If nil, the text moves in the direction the mouse moves. If t, the scroll bar moves in the direction the mouse moves.") (defconst mouse-throw-magnifier-min -6) @@ -195,7 +194,7 @@ from the original mouse click to the current mouse location. Try it; you'll like it. It's easier to observe than to explain. If the mouse is clicked and released in the same place of time we -assume that the user didn't want to scdebugroll but wanted to whatever +assume that the user didn't want to scroll but wanted to whatever mouse-2 used to do, so we pass it through. Throw scrolling was inspired (but is not identical to) the \"hand\" @@ -207,7 +206,7 @@ about which direction is natural. Perhaps it has to do with which hemisphere you're in.) To test this function, evaluate: - (global-set-key [down-mouse-2] 'mouse-drag-throw)" + (global-set-key [down-mouse-2] \\='mouse-drag-throw)" (interactive "e") ;; we want to do save-selected-window, but that requires 19.29 (let* ((start-posn (event-start start-event)) @@ -215,17 +214,16 @@ To test this function, evaluate: (start-row (cdr (posn-col-row start-posn))) (start-col (car (posn-col-row start-posn))) (old-selected-window (selected-window)) - event end row mouse-delta scroll-delta + event end row scroll-delta have-scrolled - window-last-row - col mouse-col-delta window-last-col + col (scroll-col-delta 0) - adjusted-mouse-col-delta - adjusted-mouse-delta ;; be conservative about allowing horizontal scrolling (col-scrolling-p (mouse-drag-should-do-col-scrolling))) (select-window start-window) (track-mouse + ;; Don't change the mouse pointer shape while we drag. + (setq track-mouse 'dragging) (while (progn (setq event (read-event) end (event-end event) @@ -268,7 +266,7 @@ Drag scrolling is identical to the \"hand\" option in MacPaint, or the middle button in Tk text widgets. To test this function, evaluate: - (global-set-key [down-mouse-2] 'mouse-drag-drag)" + (global-set-key [down-mouse-2] \\='mouse-drag-drag)" (interactive "e") ;; we want to do save-selected-window, but that requires 19.29 (let* ((start-posn (event-start start-event)) @@ -276,10 +274,10 @@ To test this function, evaluate: (start-row (cdr (posn-col-row start-posn))) (start-col (car (posn-col-row start-posn))) (old-selected-window (selected-window)) - event end row mouse-delta scroll-delta + event end row scroll-delta have-scrolled window-last-row - col mouse-col-delta window-last-col + col window-last-col (scroll-col-delta 0) ;; be conservative about allowing horizontal scrolling (col-scrolling-p (mouse-drag-should-do-col-scrolling))) @@ -295,7 +293,7 @@ To test this function, evaluate: (or (mouse-movement-p event) (eq (car-safe event) 'switch-frame))) ;; Scroll if see if we're on the edge. - ;; NEEDSWORK: should handle mouse-in-other window. + ;; FIXME: should handle mouse-in-other window. (cond ((not (eq start-window (posn-window end))) t) ; wait for return to original window