comparison lisp/mouse.el @ 90114:e4694597cbf4

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-21 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0 (patch 129-149) - Update from CVS - Merge from gnus--rel--5.10 - (make-text-button): Default button type if not specified - quick-install-emacs: Use mkdir --verbose only when requested * miles@gnu.org--gnu-2005/gnus--rel--5.10 (patch 31-33) - Merge from emacs--cvs-trunk--0 - Update from CVS
author Miles Bader <miles@gnu.org>
date Thu, 03 Mar 2005 10:35:22 +0000
parents bf0d492ea2d5 6452fdddef8f
children 7a3341d65a12
comparison
equal deleted inserted replaced
90113:a50413a4ba8b 90114:e4694597cbf4
79 :type '(choice (const :tag "Disabled" nil) 79 :type '(choice (const :tag "Disabled" nil)
80 (const :tag "Double click" double) 80 (const :tag "Double click" double)
81 (number :tag "Single click time limit" :value 350) 81 (number :tag "Single click time limit" :value 350)
82 (other :tag "Single click" t)) 82 (other :tag "Single click" t))
83 :group 'mouse) 83 :group 'mouse)
84
85 (defcustom mouse-1-click-in-non-selected-windows t
86 "*If non-nil, a Mouse-1 click also follows links in non-selected windows.
87
88 If nil, a Mouse-1 click on a link in a non-selected window performs
89 the normal mouse-1 binding, typically selects the window and sets
90 point at the click position."
91 :type 'boolean
92 :version "22.1"
93 :group 'mouse)
94
84 95
85 96
86 ;; Provide a mode-specific menu on a mouse button. 97 ;; Provide a mode-specific menu on a mouse button.
87 98
88 (defun popup-menu (menu &optional position prefix) 99 (defun popup-menu (menu &optional position prefix)
769 780
770 (defun mouse-on-link-p (pos) 781 (defun mouse-on-link-p (pos)
771 "Return non-nil if POS is on a link in the current buffer. 782 "Return non-nil if POS is on a link in the current buffer.
772 POS must be a buffer position in the current buffer or an mouse 783 POS must be a buffer position in the current buffer or an mouse
773 event location in the selected window, see `event-start'. 784 event location in the selected window, see `event-start'.
785 However, if `mouse-1-click-in-non-selected-windows' is non-nil,
786 POS may be a mouse event location in any window.
774 787
775 A clickable link is identified by one of the following methods: 788 A clickable link is identified by one of the following methods:
776 789
777 - If the character at POS has a non-nil `follow-link' text or 790 - If the character at POS has a non-nil `follow-link' text or
778 overlay property, use the value of that property determines what 791 overlay property, use the value of that property determines what
803 first element of that vector, i.e. the action of the mouse-1 816 first element of that vector, i.e. the action of the mouse-1
804 click is the local or global binding of that event. 817 click is the local or global binding of that event.
805 818
806 - Otherwise, the mouse-1 event is translated into a mouse-2 event 819 - Otherwise, the mouse-1 event is translated into a mouse-2 event
807 at the same position." 820 at the same position."
808 (if (consp pos) 821 (let ((w (and (consp pos) (posn-window pos))))
809 (setq pos (and (eq (selected-window) (posn-window pos)) 822 (if (consp pos)
810 (posn-point pos)))) 823 (setq pos (and (or mouse-1-click-in-non-selected-windows
811 (when pos 824 (eq (selected-window) w))
812 (let ((action 825 (posn-point pos))))
813 (or (get-char-property pos 'follow-link) 826 (when pos
814 (save-excursion 827 (with-current-buffer (window-buffer w)
815 (goto-char pos) 828 (let ((action
816 (key-binding [follow-link] nil t))))) 829 (or (get-char-property pos 'follow-link)
817 (cond 830 (save-excursion
818 ((eq action 'mouse-face) 831 (goto-char pos)
819 (and (get-char-property pos 'mouse-face) t)) 832 (key-binding [follow-link] nil t)))))
820 ((functionp action) 833 (cond
821 (funcall action pos)) 834 ((eq action 'mouse-face)
822 (t action))))) 835 (and (get-char-property pos 'mouse-face) t))
836 ((functionp action)
837 (funcall action pos))
838 (t action)))))))
823 839
824 840
825 (defun mouse-drag-region-1 (start-event) 841 (defun mouse-drag-region-1 (start-event)
826 (mouse-minibuffer-check start-event) 842 (mouse-minibuffer-check start-event)
827 (let* ((echo-keystrokes 0) 843 (let* ((echo-keystrokes 0)
837 (bottom (if (window-minibuffer-p start-window) 853 (bottom (if (window-minibuffer-p start-window)
838 (nth 3 bounds) 854 (nth 3 bounds)
839 ;; Don't count the mode line. 855 ;; Don't count the mode line.
840 (1- (nth 3 bounds)))) 856 (1- (nth 3 bounds))))
841 (on-link (and mouse-1-click-follows-link 857 (on-link (and mouse-1-click-follows-link
842 (eq start-window (selected-window)))) 858 (or mouse-1-click-in-non-selected-windows
859 (eq start-window (selected-window)))))
843 remap-double-click 860 remap-double-click
844 (click-count (1- (event-click-count start-event)))) 861 (click-count (1- (event-click-count start-event))))
845 (setq mouse-selection-click-count click-count) 862 (setq mouse-selection-click-count click-count)
846 (setq mouse-selection-click-count-buffer (current-buffer)) 863 (setq mouse-selection-click-count-buffer (current-buffer))
847 (mouse-set-point start-event) 864 (mouse-set-point start-event)