changeset 67870:60b2bb5ad00f

(mouse-drag-region-1): When remapping mouse-1 to mouse-2, go back to previously selected window, so it's selected when mouse-2 command runs.
author Richard M. Stallman <rms@gnu.org>
date Wed, 28 Dec 2005 03:19:29 +0000
parents ea017f365939
children 998f4ca6948d
files lisp/mouse.el
diffstat 1 files changed, 24 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mouse.el	Wed Dec 28 02:56:32 2005 +0000
+++ b/lisp/mouse.el	Wed Dec 28 03:19:29 2005 +0000
@@ -1002,25 +1002,30 @@
                          (or end-point
                              (= (window-start start-window)
                                 start-window-start)))
-                (if (and on-link
-                         (or (not end-point) (= end-point start-point))
-                         (consp event)
-                         (or remap-double-click
-                             (and
-                              (not (eq mouse-1-click-follows-link 'double))
-                              (= click-count 0)
-                              (= (event-click-count event) 1)
-                              (not (input-pending-p))
-                              (or (not (integerp mouse-1-click-follows-link))
-                                  (let ((t0 (posn-timestamp (event-start start-event)))
-                                        (t1 (posn-timestamp (event-end event))))
-                                    (and (integerp t0) (integerp t1)
-                                         (if (> mouse-1-click-follows-link 0)
-                                             (<= (- t1 t0) mouse-1-click-follows-link)
-                                           (< (- t0 t1) mouse-1-click-follows-link))))))))
-		    (if (or (vectorp on-link) (stringp on-link))
-			(setq event (aref on-link 0))
-		      (setcar event 'mouse-2)))
+                (when (and on-link
+			   (or (not end-point) (= end-point start-point))
+			   (consp event)
+			   (or remap-double-click
+			       (and
+				(not (eq mouse-1-click-follows-link 'double))
+				(= click-count 0)
+				(= (event-click-count event) 1)
+				(not (input-pending-p))
+				(or (not (integerp mouse-1-click-follows-link))
+				    (let ((t0 (posn-timestamp (event-start start-event)))
+					  (t1 (posn-timestamp (event-end event))))
+				      (and (integerp t0) (integerp t1)
+					   (if (> mouse-1-click-follows-link 0)
+					       (<= (- t1 t0) mouse-1-click-follows-link)
+					     (< (- t0 t1) mouse-1-click-follows-link))))))))
+		  ;; Reselect previous selected window,
+		  ;; so that the mouse-2 event runs in the same
+		  ;; situation as if user had clicked it directly.
+		  ;; Fixes the bug reported by juri@jurta.org on 2005-12-27.
+		  (select-window original-window)
+		  (if (or (vectorp on-link) (stringp on-link))
+		      (setq event (aref on-link 0))
+		    (setcar event 'mouse-2)))
 		(push event unread-command-events))))
 
         ;; Case where the end-event is not a cons cell (it's just a boring