# HG changeset patch # User Chong Yidong # Date 1130089238 0 # Node ID d9a2701e02cdb4c49a9424bf37af14275c7defd2 # Parent 781c3e37424c93885e3e33134af82c962022a2e4 * cus-edit.el (custom-button, custom-button-pressed): New vars. (custom-raised-buttons): Add :set spec. (custom-button-unraised, custom-button-pressed-unraised): New faces, so that custom-raised-buttons actually does something. (custom-mode): Use custom-button and custom-button-pressed. * wid-edit.el (widget-specify-button): Don't ignore widget-mouse-face on graphic terminals. (widget-move-and-invoke): Cleanup. diff -r 781c3e37424c -r d9a2701e02cd lisp/ChangeLog --- a/lisp/ChangeLog Sun Oct 23 17:26:53 2005 +0000 +++ b/lisp/ChangeLog Sun Oct 23 17:40:38 2005 +0000 @@ -1,3 +1,15 @@ +2005-10-23 Chong Yidong + + * cus-edit.el (custom-button, custom-button-pressed): New vars. + (custom-raised-buttons): Add :set spec. + (custom-button-unraised, custom-button-pressed-unraised): New + faces, so that custom-raised-buttons actually does something. + (custom-mode): Use custom-button and custom-button-pressed. + + * wid-edit.el (widget-specify-button): Don't ignore + widget-mouse-face on graphic terminals. + (widget-move-and-invoke): Cleanup. + 2005-10-23 Thien-Thi Nguyen * whitespace.el (whitespace-cleanup): Doc fix. diff -r 781c3e37424c -r d9a2701e02cd lisp/cus-edit.el --- a/lisp/cus-edit.el Sun Oct 23 17:26:53 2005 +0000 +++ b/lisp/cus-edit.el Sun Oct 23 17:40:38 2005 +0000 @@ -1377,13 +1377,27 @@ (interactive) (quit-window custom-buffer-done-kill)) +(defvar custom-button nil + "Face used for buttons in customization buffers.") + +(defvar custom-button-pressed nil + "Face used for pressed buttons in customization buffers.") + (defcustom custom-raised-buttons (not (equal (face-valid-attribute-values :box) '(("unspecified" . unspecified)))) "If non-nil, indicate active buttons in a `raised-button' style. Otherwise use brackets." :type 'boolean :version "21.1" - :group 'custom-buffer) + :group 'custom-buffer + :set (lambda (variable value) + (custom-set-default variable value) + (setq custom-button + (if value 'custom-button 'custom-button-unraised)) + (setq custom-button-pressed + (if value + 'custom-button-pressed + 'custom-button-pressed-unraised)))) (defun custom-buffer-create-internal (options &optional description) (custom-mode) @@ -1896,24 +1910,52 @@ :background "lightgrey" :foreground "black")) (t nil)) - "Face used for buttons in customization buffers." + "Face for custom buffer buttons if `custom-raised-buttons' is non-nil." :version "21.1" :group 'custom-faces) ;; backward-compatibility alias (put 'custom-button-face 'face-alias 'custom-button) +(defface custom-button-unraised + '((((min-colors 88) + (class color) (background light)) :foreground "blue1" :underline t) + (((class color) (background light)) :foreground "blue" :underline t) + (((min-colors 88) + (class color) (background dark)) :foreground "cyan1" :underline t) + (((class color) (background dark)) :foreground "cyan" :underline t) + (t :underline t)) + "Face for custom buffer buttons if `custom-raised-buttons' is nil." + :version "22.1" + :group 'custom-faces) + +(setq custom-button + (if custom-raised-buttons 'custom-button 'custom-button-unraised)) + (defface custom-button-pressed '((((type x w32 mac) (class color)) (:box (:line-width 2 :style pressed-button) :background "lightgrey" :foreground "black")) (t (:inverse-video t))) - "Face used for buttons in customization buffers." + "Face for pressed custom buttons if `custom-raised-buttons' is non-nil." :version "21.1" :group 'custom-faces) ;; backward-compatibility alias (put 'custom-button-pressed-face 'face-alias 'custom-button-pressed) +(defface custom-button-pressed-unraised + '((default :inherit custom-button-unraised) + (((class color) (background light)) :foreground "magenta4") + (((class color) (background dark)) :foreground "violet")) + "Face for pressed custom buttons if `custom-raised-buttons' is nil." + :version "22.1" + :group 'custom-faces) + +(setq custom-button-pressed + (if custom-raised-buttons + 'custom-button-pressed + 'custom-button-pressed-unraised)) + (defface custom-documentation nil "Face used for documentation strings in customization buffers." :group 'custom-faces) @@ -4311,10 +4353,11 @@ (make-local-variable 'widget-documentation-face) (setq widget-documentation-face 'custom-documentation) (make-local-variable 'widget-button-face) - (setq widget-button-face 'custom-button) - (set (make-local-variable 'widget-button-pressed-face) 'custom-button-pressed) - (set (make-local-variable 'widget-mouse-face) - 'custom-button-pressed) ; buttons `depress' when moused + (setq widget-button-face custom-button) + (set (make-local-variable 'widget-button-pressed-face) custom-button-pressed) + (if custom-raised-buttons + (set (make-local-variable 'widget-mouse-face) custom-button)) + ;; When possible, use relief for buttons, not bracketing. This test ;; may not be optimal. (when custom-raised-buttons diff -r 781c3e37424c -r d9a2701e02cd lisp/wid-edit.el --- a/lisp/wid-edit.el Sun Oct 23 17:26:53 2005 +0000 +++ b/lisp/wid-edit.el Sun Oct 23 17:40:38 2005 +0000 @@ -403,10 +403,7 @@ ;; We want to avoid the face with image buttons. (unless (widget-get widget :suppress-face) (overlay-put overlay 'face (widget-apply widget :button-face-get)) - ; Text terminals cannot change mouse pointer shape, so use mouse - ; face instead. - (or (display-graphic-p) - (overlay-put overlay 'mouse-face widget-mouse-face))) + (overlay-put overlay 'mouse-face widget-mouse-face)) (overlay-put overlay 'pointer 'hand) (overlay-put overlay 'follow-link follow-link) (overlay-put overlay 'help-echo help-echo))) @@ -664,11 +661,9 @@ "Move to where you click, and if it is an active field, invoke it." (interactive "e") (mouse-set-point event) - (if (widget-event-point event) - (let* ((pos (widget-event-point event)) - (button (get-char-property pos 'button))) - (if button - (widget-button-click event))))) + (let ((pos (widget-event-point event))) + (if (and pos (get-char-property pos 'button)) + (widget-button-click event)))) ;;; Buttons.