]> git.eshelyaron.com Git - emacs.git/commitdiff
* mouse.el (mouse-drag-region-1): Handle the case where a
authorChong Yidong <cyd@stupidchicken.com>
Fri, 14 Oct 2005 13:15:05 +0000 (13:15 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 14 Oct 2005 13:15:05 +0000 (13:15 +0000)
double-click event is bound to an arbitrary function.

lisp/ChangeLog
lisp/mouse.el

index 914eec4ab648722e71ba2379b505aab32d9b9ee9..7331e7a621363fedb573b61dd70c461869ec4dea 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * mouse.el (mouse-drag-region-1): Handle the case where a
+       double-click event is bound to an arbitrary function.
+
 2005-10-14  David Ponce  <david@dponce.com>
 
        * recentf.el (recentf-track-opened-file)
index 90f2b3ba87918665234bd8189045a68c8c66c805..294396a0029a0189a2fbc2d94b8166517f6953fd 100644 (file)
@@ -958,12 +958,14 @@ at the same position."
         (mouse-move-drag-overlay mouse-drag-overlay start-point end-point click-count))
 
       (if (consp event)
-         (let ((fun (key-binding (vector (car event)))))
+         (let* ((fun (key-binding (vector (car event))))
+                (do-multi-click   (and (> (event-click-count event) 0)
+                                       (functionp fun)
+                                       (not (eq fun 'mouse-set-point)))))
             ;; Run the binding of the terminating up-event, if possible.
-            ;; In the case of a multiple click, it gives the wrong results,
-           ;; because it would fail to set up a region.
-           (if (not (= (overlay-start mouse-drag-overlay)
-                       (overlay-end mouse-drag-overlay)))
+           (if (and (not (= (overlay-start mouse-drag-overlay)
+                            (overlay-end mouse-drag-overlay)))
+                    (not do-multi-click))
                (let* ((stop-point
                        (if (numberp (posn-point (event-end event)))
                            (posn-point (event-end event))
@@ -996,8 +998,12 @@ at the same position."
                     (and (mark t) mark-active
                          (eq buffer (current-buffer))
                          (mouse-set-region-1))))
-              (delete-overlay mouse-drag-overlay)
               ;; Run the binding of the terminating up-event.
+             ;; If a multiple click is not bound to mouse-set-point,
+             ;; cancel the effects of mouse-move-drag-overlay to
+             ;; avoid producing wrong results.
+             (if do-multi-click (goto-char start-point))
+              (delete-overlay mouse-drag-overlay)
               (when (and (functionp fun)
                          (= start-hscroll (window-hscroll start-window))
                          ;; Don't run the up-event handler if the