changeset 25686:c1a7a52bbfea

Remove some compatibility code and checks. (widget-specify-field, widget-specify-button): Don't use XEmacs properties. (widget-overlay-inactive): Change error message. (widget-button-pressed-face): New variable. (widget-button-click): Use it. (widget-documentation-link-add): Specify mouse and button faces. (widget-echo-help-mouse, widget-stop-mouse-tracking): Functions removed now the functionality is built in.
author Dave Love <fx@gnu.org>
date Mon, 13 Sep 1999 13:54:33 +0000
parents fc2bfab28ed7
children afad62240679
files lisp/wid-edit.el
diffstat 1 files changed, 27 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/wid-edit.el	Mon Sep 13 13:44:41 1999 +0000
+++ b/lisp/wid-edit.el	Mon Sep 13 13:54:33 1999 +0000
@@ -1,11 +1,12 @@
 ;;; wid-edit.el --- Functions for creating and using widgets.
 ;;
-;; Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
+;; Maintainer: FSF
 ;; Keywords: extensions
 ;; Version: 1.9951
-;; X-URL: http://www.dina.kvl.dk/~abraham/custom/
+;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (probably obsolete)
 
 ;; This file is part of GNU Emacs.
 
@@ -46,18 +47,6 @@
   (autoload 'Info-goto-node "info")
   (autoload 'finder-commentary "finder" nil t)
 
-  (unless (and (featurep 'custom) (fboundp 'custom-declare-variable))
-    ;; We have the old custom-library, hack around it!
-    (defmacro defgroup (&rest args) nil)
-    (defmacro defcustom (var value doc &rest args) 
-      (` (defvar (, var) (, value) (, doc))))
-    (defmacro defface (&rest args) nil)
-    (define-widget-keywords :prefix :tag :load :link :options :type :group)
-    (when (fboundp 'copy-face)
-      (copy-face 'default 'widget-documentation-face)
-      (copy-face 'bold 'widget-button-face)
-      (copy-face 'italic 'widget-field-face)))
-
   (unless (fboundp 'button-release-event-p)
     ;; XEmacs function missing from Emacs.
     (defun button-release-event-p (event)
@@ -89,7 +78,7 @@
   :group 'faces)
 
 (defvar widget-documentation-face 'widget-documentation-face
-  "Face used for documentation strings in widges.
+  "Face used for documentation strings in widgets.
 This exists as a variable so it can be set locally in certain buffers.")
 
 (defface widget-documentation-face '((((class color)
@@ -104,7 +93,7 @@
   :group 'widget-faces)
 
 (defvar widget-button-face 'widget-button-face
-  "Face used for buttons in widges.
+  "Face used for buttons in widgets.
 This exists as a variable so it can be set locally in certain buffers.")
 
 (defface widget-button-face '((t (:bold t)))
@@ -340,12 +329,12 @@
     (unless (or (stringp help-echo) (null help-echo))
       (setq help-echo 'widget-mouse-help))    
     (widget-put widget :field-overlay overlay)
-    (overlay-put overlay 'detachable nil)
+    ;;(overlay-put overlay 'detachable nil)
     (overlay-put overlay 'field widget)
     (overlay-put overlay 'local-map map)
-    (overlay-put overlay 'keymap map)
+    ;;(overlay-put overlay 'keymap map)
     (overlay-put overlay 'face face)
-    (overlay-put overlay 'balloon-help help-echo)
+    ;;(overlay-put overlay 'balloon-help help-echo)
     (overlay-put overlay 'help-echo help-echo))
   (widget-specify-secret widget))
 
@@ -377,7 +366,7 @@
       (setq help-echo 'widget-mouse-help))
     (overlay-put overlay 'button widget)
     (overlay-put overlay 'mouse-face widget-mouse-face)
-    (overlay-put overlay 'balloon-help help-echo)
+    ;;(overlay-put overlay 'balloon-help help-echo)
     (overlay-put overlay 'help-echo help-echo)
     (overlay-put overlay 'face face)))
 
@@ -444,15 +433,13 @@
       ;; (overlay-put overlay 'mouse-face 'widget-inactive-face)
       (overlay-put overlay 'evaporate t)
       (overlay-put overlay 'priority 100)
-      (overlay-put overlay (if (string-match "XEmacs" emacs-version)
-			       'read-only
-			     'modification-hooks) '(widget-overlay-inactive))
+      (overlay-put overlay 'modification-hooks '(widget-overlay-inactive))
       (widget-put widget :inactive overlay))))
 
 (defun widget-overlay-inactive (&rest junk)
   "Ignoring the arguments, signal an error."
   (unless inhibit-read-only
-    (error "Attempt to modify inactive widget")))
+    (error "The widget here is not active")))
 
 
 (defun widget-specify-active (widget)
@@ -502,7 +489,7 @@
       (widget-apply widget :default-get)))
 
 (defun widget-match-inline (widget vals)
-  ;; In WIDGET, match the start of VALS.
+  "In WIDGET, match the start of VALS."
   (cond ((widget-get widget :inline)
 	 (widget-apply widget :match-inline vals))
 	((and vals
@@ -886,8 +873,7 @@
 
 (unless widget-field-keymap 
   (setq widget-field-keymap (copy-keymap widget-keymap))
-  (unless (string-match "XEmacs" (emacs-version))
-    (define-key widget-field-keymap [menu-bar] 'nil))
+  (define-key widget-field-keymap [menu-bar] 'nil)
   (define-key widget-field-keymap "\C-k" 'widget-kill-line)
   (define-key widget-field-keymap "\M-\t" 'widget-complete)
   (define-key widget-field-keymap "\C-m" 'widget-field-activate)
@@ -900,8 +886,7 @@
 
 (unless widget-text-keymap 
   (setq widget-text-keymap (copy-keymap widget-keymap))
-  (unless (string-match "XEmacs" (emacs-version))
-    (define-key widget-text-keymap [menu-bar] 'nil))
+  (define-key widget-text-keymap [menu-bar] 'nil)
   (define-key widget-text-keymap "\C-a" 'widget-beginning-of-line)
   (define-key widget-text-keymap "\C-e" 'widget-end-of-line)
   (set-keymap-parent widget-text-keymap global-map))
@@ -915,6 +900,10 @@
       (call-interactively
        (lookup-key widget-global-map (this-command-keys))))))
 
+(defvar widget-button-pressed-face 'widget-button-pressed-face
+  "Face used for pressed buttons in widgets.
+This exists as a variable so it can be set locally in certain buffers.")
+
 (defface widget-button-pressed-face 
   '((((class color))
      (:foreground "red"))
@@ -940,9 +929,9 @@
 		 (unwind-protect
 		     (let ((track-mouse t))
 		       (overlay-put overlay
-				    'face 'widget-button-pressed-face)
+				    'face widget-button-pressed-face)
 		       (overlay-put overlay 
-				    'mouse-face 'widget-button-pressed-face)
+				    'mouse-face widget-button-pressed-face)
 		       (unless (widget-apply button :mouse-down-action event)
 			 (while (not (button-release-event-p event))
 			   (setq event (widget-read-event)
@@ -953,10 +942,10 @@
 			       (progn 
 				 (overlay-put overlay 
 					      'face
-					      'widget-button-pressed-face)
+					      widget-button-pressed-face)
 				 (overlay-put overlay 
 					      'mouse-face 
-					      'widget-button-pressed-face))
+					      widget-button-pressed-face))
 			     (overlay-put overlay 'face face)
 			     (overlay-put overlay 'mouse-face mouse-face))))
 		       (when (and pos 
@@ -2692,7 +2681,7 @@
 ;;; The `group' Widget.
 
 (define-widget 'group 'default
-  "A widget which group other widgets inside."
+  "A widget which groups other widgets inside."
   :convert-widget 'widget-types-convert-widget
   :format "%v"
   :value-create 'widget-group-value-create
@@ -2839,7 +2828,10 @@
     (let ((regexp widget-documentation-link-regexp)
 	  (predicate widget-documentation-link-p)
 	  (type widget-documentation-link-type)
-	  (buttons (widget-get widget :buttons)))
+	  (buttons (widget-get widget :buttons))
+	  (widget-mouse-face (default-value 'widget-mouse-face))
+	  (widget-button-face widget-documentation-face)
+	  (widget-button-pressed-face widget-documentation-face))
       (save-excursion
 	(goto-char from)
 	(while (re-search-forward regexp to t)
@@ -3542,38 +3534,6 @@
 
 ;;; The Help Echo
 
-(defun widget-echo-help-mouse ()
-  "Display the help message for the widget under the mouse.
-Enable with (run-with-idle-timer 1 t 'widget-echo-help-mouse)"
-  (let* ((pos (mouse-position))
-	 (frame (car pos))
-	 (x (car (cdr pos)))
-	 (y (cdr (cdr pos)))
-	 (win (window-at x y frame))
-	 (where (coordinates-in-window-p (cons x y) win)))
-    (when (consp where)
-      (save-window-excursion
-	(progn ; save-excursion
-	  (select-window win)
-	  (let* ((result (compute-motion (window-start win)
-					 '(0 . 0)
-					 (point-max)
-					 where
-					 (window-width win)
-					 (cons (window-hscroll) 0)
-					 win)))
-	    (when (and (eq (nth 1 result) x)
-		       (eq (nth 2 result) y))
-	      (widget-echo-help (nth 0 result))))))))
-  (unless track-mouse
-    (setq track-mouse t)
-    (add-hook 'post-command-hook 'widget-stop-mouse-tracking)))
-
-(defun widget-stop-mouse-tracking (&rest args)
-  "Stop the mouse tracking done while idle."
-  (remove-hook 'post-command-hook 'widget-stop-mouse-tracking)
-  (setq track-mouse nil))
-
 (defun widget-at (pos)
   "The button or field at POS."
   (or (get-char-property pos 'button)