changeset 66336:d9a2701e02cd

* 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.
author Chong Yidong <cyd@stupidchicken.com>
date Sun, 23 Oct 2005 17:40:38 +0000
parents 781c3e37424c
children 14837742f3d8
files lisp/ChangeLog lisp/cus-edit.el lisp/wid-edit.el
diffstat 3 files changed, 66 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- 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  <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.
--- 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
--- 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.