;;; 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 <johnh@ISI.EDU>
;; Keywords: mouse
;; 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-
"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
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)
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\"
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))
(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)
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))
(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)))
(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