mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-23 10:34:07 +00:00
* wid-edit.el (widget-button-click-moves-point): New variable.
(widget-button-click): If widget-button-click-moves-point is non-nil, set point after performing the button action * cus-edit.el (custom-mode): Set widget-button-click-moves-point.
This commit is contained in:
parent
e2247cd00d
commit
b0c4ae71dc
@ -1,3 +1,11 @@
|
||||
2006-09-30 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* wid-edit.el (widget-button-click-moves-point): New variable.
|
||||
(widget-button-click): If widget-button-click-moves-point is
|
||||
non-nil, set point after performing the button action
|
||||
|
||||
* cus-edit.el (custom-mode): Set widget-button-click-moves-point.
|
||||
|
||||
2006-09-30 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* files.el (find-file-existing): Modified to not allow wildcards.
|
||||
|
@ -4555,6 +4555,13 @@ if that value is non-nil."
|
||||
(setq widget-documentation-face 'custom-documentation)
|
||||
(make-local-variable 'widget-button-face)
|
||||
(setq widget-button-face custom-button)
|
||||
|
||||
;; We need this because of the "More" button on docstrings.
|
||||
;; Otherwise clicking on "More" can push point offscreen, which
|
||||
;; causes the window to recenter on point, which pushes the
|
||||
;; newly-revealed docstring offscreen; which is annoying. -- cyd.
|
||||
(set (make-local-variable 'widget-button-click-moves-point) t)
|
||||
|
||||
(set (make-local-variable 'widget-button-pressed-face) custom-button-pressed)
|
||||
(set (make-local-variable 'widget-mouse-face) custom-button-mouse)
|
||||
|
||||
|
@ -912,6 +912,10 @@ Recommended as a parent keymap for modes using widgets.")
|
||||
;; backward-compatibility alias
|
||||
(put 'widget-button-pressed-face 'face-alias 'widget-button-pressed)
|
||||
|
||||
(defvar widget-button-click-moves-point nil
|
||||
"If non-nil, `widget-button-click' moves point to a button after invoking it.
|
||||
If nil, point returns to its original position after invoking a button.")
|
||||
|
||||
(defun widget-button-click (event)
|
||||
"Invoke the button that the mouse is pointing at."
|
||||
(interactive "e")
|
||||
@ -922,7 +926,8 @@ Recommended as a parent keymap for modes using widgets.")
|
||||
(start (event-start event))
|
||||
(button (get-char-property
|
||||
pos 'button (and (windowp (posn-window start))
|
||||
(window-buffer (posn-window start))))))
|
||||
(window-buffer (posn-window start)))))
|
||||
newpoint)
|
||||
(when (or (null button)
|
||||
(catch 'button-press-cancelled
|
||||
;; Mouse click on a widget button. Do the following
|
||||
@ -974,12 +979,15 @@ Recommended as a parent keymap for modes using widgets.")
|
||||
|
||||
;; When mouse is released over the button, run
|
||||
;; its action function.
|
||||
(when (and pos
|
||||
(eq (get-char-property pos 'button) button))
|
||||
(widget-apply-action button event)))
|
||||
(when (and pos (eq (get-char-property pos 'button) button))
|
||||
(goto-char pos)
|
||||
(widget-apply-action button event)
|
||||
(if widget-button-click-moves-point
|
||||
(setq newpoint (point)))))
|
||||
(overlay-put overlay 'face face)
|
||||
(overlay-put overlay 'mouse-face mouse-face))))
|
||||
|
||||
(if newpoint (goto-char newpoint))
|
||||
;; This loses if the widget action switches windows. -- cyd
|
||||
;; (unless (pos-visible-in-window-p (widget-event-point event))
|
||||
;; (mouse-set-point event)
|
||||
|
Loading…
Reference in New Issue
Block a user