]> code.delx.au - gnu-emacs/blobdiff - lisp/mouse-drag.el
(pr-eval-local-alist, pr-eval-setting-alist): Use `mapc' rather than `mapcar'.
[gnu-emacs] / lisp / mouse-drag.el
index 0714078fdeac1a82d9383da2360e2da073819f25..bfb199ab897721a6e50f40af75bbff78c5dd2293 100644 (file)
@@ -1,6 +1,7 @@
 ;;; mouse-drag.el --- use mouse-2 to do a new style of scrolling
 
-;; Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 2001, 2002, 2003, 2004,
+;;   2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: John Heidemann <johnh@ISI.EDU>
 ;; Keywords: mouse
@@ -9,7 +10,7 @@
 
 ;; GNU Emacs is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
@@ -19,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -157,7 +158,7 @@ Keep the cursor on the screen as needed."
 Basically, we check for existing horizontal scrolling."
   (or truncate-lines
       (> (window-hscroll (selected-window)) 0)
-      (< (window-width) (screen-width))
+      (not (window-full-width-p))
       (and
        mouse-drag-electric-col-scrolling
        (save-excursion  ;; on a long line?
@@ -208,7 +209,7 @@ To test this function, evaluate:
         (start-col (car (posn-col-row start-posn)))
         (old-selected-window (selected-window))
         event end row mouse-delta scroll-delta
-        have-scrolled point-event-p old-binding
+        have-scrolled
         window-last-row
         col mouse-col-delta window-last-col
         (scroll-col-delta 0)
@@ -261,18 +262,13 @@ To test this function, evaluate:
              (mouse-drag-safe-scroll scroll-delta scroll-col-delta)
              (mouse-drag-repeatedly-safe-scroll scroll-delta scroll-col-delta))))) ;xxx
     ;; If it was a click and not a drag, prepare to pass the event on.
-    ;; Note:  We must determine the pass-through event before restoring
-    ;; the window, but invoke it after.  Sigh.
+    ;; Is there a more correct way to reconstruct the event?
     (if (and (not have-scrolled)
             (mouse-drag-events-are-point-events-p start-posn end))
-       (setq point-event-p t
-             old-binding (key-binding
-                          (vector (event-basic-type start-event)))))
+       (push (cons (event-basic-type start-event) (cdr start-event))
+             unread-command-events))
     ;; Now restore the old window.
-    (select-window old-selected-window)
-    ;; For clicks, call the old function.
-    (if point-event-p
-       (call-interactively old-binding))))
+    (select-window old-selected-window)))
 
 (defun mouse-drag-drag (start-event)
   "\"Drag\" the page according to a mouse drag.
@@ -297,7 +293,7 @@ To test this function, evaluate:
         (start-col (car (posn-col-row start-posn)))
         (old-selected-window (selected-window))
         event end row mouse-delta scroll-delta
-        have-scrolled point-event-p old-binding
+        have-scrolled
         window-last-row
         col mouse-col-delta window-last-col
         (scroll-col-delta 0)
@@ -335,19 +331,16 @@ To test this function, evaluate:
                (setq have-scrolled t)
                (mouse-drag-safe-scroll scroll-delta scroll-col-delta)))))))
     ;; If it was a click and not a drag, prepare to pass the event on.
-    ;; Note:  We must determine the pass-through event before restoring
-    ;; the window, but invoke it after.  Sigh.
+    ;; Is there a more correct way to reconstruct the event?
     (if (and (not have-scrolled)
             (mouse-drag-events-are-point-events-p start-posn end))
-       (setq point-event-p t
-             old-binding (key-binding
-                          (vector (event-basic-type start-event)))))
+       (push (cons (event-basic-type start-event) (cdr start-event))
+             unread-command-events))
     ;; Now restore the old window.
-    (select-window old-selected-window)
-    ;; For clicks, call the old function.
-    (if point-event-p
-       (call-interactively old-binding))))
+    (select-window old-selected-window)))
+
 
 (provide 'mouse-drag)
 
+;;; arch-tag: e47354ff-82f5-42c4-b3dc-88dd9c04b770
 ;;; mouse-drag.el ends here