+2005-10-23 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <ttn@gnu.org>
* whitespace.el (whitespace-cleanup): Doc fix.
(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)
: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)
(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
;; 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)))
"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.