emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/mwheel.el


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/lisp/mwheel.el
Date: Thu, 28 Nov 2002 18:03:31 -0500

Index: emacs/lisp/mwheel.el
diff -c emacs/lisp/mwheel.el:1.19 emacs/lisp/mwheel.el:1.20
*** emacs/lisp/mwheel.el:1.19   Mon Nov 11 17:05:56 2002
--- emacs/lisp/mwheel.el        Thu Nov 28 18:03:30 2002
***************
*** 1,4 ****
! ;;; mwheel.el --- Mouse support for MS intelli-mouse type mice
  
  ;; Copyright (C) 1998,2000,2001,2002  Free Software Foundation, Inc.
  ;; Maintainer: William M. Perry <address@hidden>
--- 1,4 ----
! ;;; mwheel.el --- Wheel mouse support
  
  ;; Copyright (C) 1998,2000,2001,2002  Free Software Foundation, Inc.
  ;; Maintainer: William M. Perry <address@hidden>
***************
*** 40,45 ****
--- 40,46 ----
  ;;; Code:
  
  (require 'custom)
+ (require 'timer)
  
  ;; Setter function for mouse-button user-options.  Switch Mouse Wheel
  ;; mode off and on again so that the old button is unbound and
***************
*** 74,79 ****
--- 75,100 ----
    :type 'symbol
    :set 'mouse-wheel-change-button)
  
+ (defvar mouse-wheel-click-button 2
+   "Obsolete.  Use `mouse-wheel-click-event'.")
+ (defcustom mouse-wheel-click-event
+   ;; In the latest versions of XEmacs, we could just use mouse-%s as well.
+   (intern (format (if (featurep 'xemacs) "button%s" "mouse-%s")
+                 mouse-wheel-click-button))
+   "Event that should be temporarily inhibited after mouse scrolling.
+ The mouse wheel is typically on the mouse-2 button, so it may easily
+ happen that text is accidentially yanked into the buffer when
+ scrolling with the mouse wheel.  To prevent that, this variable can be
+ set to the event sent when clicking on the mouse wheel button."
+   :group 'mouse
+   :type 'symbol
+   :set 'mouse-wheel-change-button)
+ 
+ (defcustom mouse-wheel-inhibit-click-time 0.35
+   "Time in seconds to inhibit clicking on mouse wheel button after scroll."
+   :group 'mouse
+   :type 'float)
+ 
  (defcustom mouse-wheel-scroll-amount '(5 ((shift) . 1) ((control) . nil))
    "Amount to scroll windows by when spinning the mouse wheel.
  This is an alist mapping the modifier key to the amount to scroll when
***************
*** 140,145 ****
--- 161,179 ----
        (posn-window (event-start event)))
    (fset 'mwheel-event-window 'event-window))
  
+ (defvar mwheel-inhibit-click-event-timer nil
+   "Timer running while mouse wheel click event is inhibited.")
+ 
+ (defun mwheel-inhibit-click-timeout ()
+   "Handler for `mwheel-inhibit-click-event-timer'."
+   (setq mwheel-inhibit-click-event-timer nil)
+   (remove-hook 'pre-command-hook 'mwheel-filter-click-events))
+ 
+ (defun mwheel-filter-click-events ()
+   "Discard `mouse-wheel-click-event' while scrolling the mouse."
+   (if (eq (event-basic-type last-input-event) mouse-wheel-click-event)
+       (setq this-command 'ignore)))
+ 
  (defun mwheel-scroll (event)
    "Scroll up or down according to the EVENT.
  This should only be bound to mouse buttons 4 and 5."
***************
*** 165,172 ****
          (cond ((eq button mouse-wheel-down-event) (scroll-down amt))
                ((eq button mouse-wheel-up-event) (scroll-up amt))
                (t (error "Bad binding in mwheel-scroll"))))
!       (if curwin (select-window curwin)))))
! 
  
  ;;;###autoload
  (define-minor-mode mouse-wheel-mode
--- 199,212 ----
          (cond ((eq button mouse-wheel-down-event) (scroll-down amt))
                ((eq button mouse-wheel-up-event) (scroll-up amt))
                (t (error "Bad binding in mwheel-scroll"))))
!       (if curwin (select-window curwin))))
!   (when (and mouse-wheel-click-event mouse-wheel-inhibit-click-time)
!     (if mwheel-inhibit-click-event-timer
!       (cancel-timer mwheel-inhibit-click-event-timer)
!       (add-hook 'pre-command-hook 'mwheel-filter-click-events))
!     (setq mwheel-inhibit-click-event-timer 
!         (run-with-timer mouse-wheel-inhibit-click-time nil
!                         'mwheel-inhibit-click-timeout))))
  
  ;;;###autoload
  (define-minor-mode mouse-wheel-mode




reply via email to

[Prev in Thread] Current Thread [Next in Thread]