summaryrefslogtreecommitdiff
path: root/lisp/wid-edit.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>2001-12-02 04:49:43 +0000
committerRichard M. Stallman <rms@gnu.org>2001-12-02 04:49:43 +0000
commitbc3420db106d9d3f01d0b804488fef60efa3ae2f (patch)
tree97856b3a2322ff8399f42e3753da8799ade33b1b /lisp/wid-edit.el
parent2ed848b01fda8b91e01844ae651bd8146059e0fd (diff)
downloademacs-bc3420db106d9d3f01d0b804488fef60efa3ae2f.tar.gz
(widget-button-click): Don't move point permanently:
Avoid mouse-set-point--instead select the window, then do save-excursion, then move point. Specify the buffer for get-char-property. Don't use `@' in interactive.
Diffstat (limited to 'lisp/wid-edit.el')
-rw-r--r--lisp/wid-edit.el19
1 files changed, 12 insertions, 7 deletions
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index a5cd1dba523..c9b962ef06a 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -856,17 +856,21 @@ Recommended as a parent keymap for modes using widgets.")
(defun widget-button-click (event)
"Invoke the button that the mouse is pointing at."
- (interactive "@e")
+ (interactive "e")
(if (widget-event-point event)
(let* ((pos (widget-event-point event))
- (button (get-char-property pos 'button)))
+ (start (event-start event))
+ (button (get-char-property
+ pos 'button (and (windowp (posn-window start))
+ (window-buffer (posn-window start))))))
(if button
;; Mouse click on a widget button. Do the following
;; in a save-excursion so that the click on the button
;; doesn't change point.
(save-selected-window
+ (select-window (posn-window (event-start event)))
(save-excursion
- (mouse-set-point event)
+ (goto-char (posn-point (event-start event)))
(let* ((overlay (widget-get button :button-overlay))
(face (overlay-get overlay 'face))
(mouse-face (overlay-get overlay 'mouse-face)))
@@ -907,10 +911,11 @@ Recommended as a parent keymap for modes using widgets.")
(overlay-put overlay 'face face)
(overlay-put overlay 'mouse-face mouse-face))))
- (unless (pos-visible-in-window-p (widget-event-point event))
- (mouse-set-point event)
- (beginning-of-line)
- (recenter)))
+ (unless (pos-visible-in-window-p (widget-event-point event))
+ (mouse-set-point event)
+ (beginning-of-line)
+ (recenter))
+ )
(let ((up t) command)
;; Mouse click not on a widget button. Find the global