diff options
author | Kim F. Storm <storm@cua.dk> | 2005-02-22 09:42:06 +0000 |
---|---|---|
committer | Kim F. Storm <storm@cua.dk> | 2005-02-22 09:42:06 +0000 |
commit | b0ca1b8a9689a39682d221cff2fef26a7adf33b9 (patch) | |
tree | 9c276de421b77c162774538bc56dc751d6d70e67 /lisp/mouse.el | |
parent | baf70a025c29e4405cb608c5413e4d966afd7d6c (diff) | |
download | emacs-b0ca1b8a9689a39682d221cff2fef26a7adf33b9.tar.gz |
(mouse-on-link-p): If arg POS is a mouse event,
check that window of that event is the selected window.
(mouse-drag-region-1): Compare mouse event window to selected
window before setting point.
Diffstat (limited to 'lisp/mouse.el')
-rw-r--r-- | lisp/mouse.el | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el index 96c1b85f98b..5efcca1bd5e 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -769,6 +769,8 @@ If the click is in the echo area, display the `*Messages*' buffer." (defun mouse-on-link-p (pos) "Return non-nil if POS is on a link in the current buffer. +POS must be a buffer position in the current buffer or an mouse +event location in the selected window, see `event-start'. A clickable link is identified by one of the following methods: @@ -787,7 +789,7 @@ is a non-nil `mouse-face' property at POS. Return t in this case. - If the value is a function, FUNC, POS is inside a link if the call \(FUNC POS) returns non-nil. Return the return value -from that call. +from that call. Arg is \(posn-point POS) if POS is a mouse event, - Otherwise, return the value itself. @@ -803,17 +805,22 @@ click is the local or global binding of that event. - Otherwise, the mouse-1 event is translated into a mouse-2 event at the same position." - (let ((action - (or (get-char-property pos 'follow-link) - (save-excursion - (goto-char pos) - (key-binding [follow-link] nil t))))) - (cond - ((eq action 'mouse-face) - (and (get-char-property pos 'mouse-face) t)) - ((functionp action) - (funcall action pos)) - (t action)))) + (if (consp pos) + (setq pos (and (eq (selected-window) (posn-window pos)) + (posn-point pos)))) + (when pos + (let ((action + (or (get-char-property pos 'follow-link) + (save-excursion + (goto-char pos) + (key-binding [follow-link] nil t))))) + (cond + ((eq action 'mouse-face) + (and (get-char-property pos 'mouse-face) t)) + ((functionp action) + (funcall action pos)) + (t action))))) + (defun mouse-drag-region-1 (start-event) (mouse-minibuffer-check start-event) @@ -831,7 +838,9 @@ at the same position." (nth 3 bounds) ;; Don't count the mode line. (1- (nth 3 bounds)))) - on-link remap-double-click + (on-link (and mouse-1-click-follows-link + (eq start-window (selected-window)))) + remap-double-click (click-count (1- (event-click-count start-event)))) (setq mouse-selection-click-count click-count) (setq mouse-selection-click-count-buffer (current-buffer)) @@ -841,7 +850,7 @@ at the same position." (if (< (point) start-point) (goto-char start-point)) (setq start-point (point)) - (setq on-link (and mouse-1-click-follows-link + (setq on-link (and on-link (mouse-on-link-p start-point))) (setq remap-double-click (and on-link (eq mouse-1-click-follows-link 'double) |