From f28e9cbd37a11d734b4301a332661affee281aa2 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 14 Oct 2005 13:15:05 +0000 Subject: [PATCH] * mouse.el (mouse-drag-region-1): Handle the case where a double-click event is bound to an arbitrary function. --- lisp/ChangeLog | 5 +++++ lisp/mouse.el | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 914eec4ab6..7331e7a621 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-14 Chong Yidong + + * 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 * recentf.el (recentf-track-opened-file) diff --git a/lisp/mouse.el b/lisp/mouse.el index 90f2b3ba87..294396a002 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -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 -- 2.20.1