changeset 35043:f7ca93e40e16

(tooltip-frame-parameters): Remove colors. (tooltip): New face (tooltip-set-param): New function. (tooltip-show): Set up color frame parameters from face `tooltip'. Display the tooltip text in face `tooltip'.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 04 Jan 2001 14:07:37 +0000
parents 3088c9745e92
children bb5e7a8b6f4c
files lisp/tooltip.el
diffstat 1 files changed, 33 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tooltip.el	Thu Jan 04 13:55:37 2001 +0000
+++ b/lisp/tooltip.el	Thu Jan 04 14:07:37 2001 +0000
@@ -100,10 +100,7 @@
 
 (defcustom tooltip-frame-parameters
   '((name . "tooltip")
-    (foreground-color . "black")
-    (background-color . "lightyellow")
     (internal-border-width . 5)
-    (border-color . "lightyellow")
     (border-width . 1))
   "Frame parameters used for tooltips."
   :type 'sexp
@@ -111,6 +108,14 @@
   :group 'tooltip)
 
 
+(defface tooltip
+  '((((class color))
+     (:background "lightyellow" :foreground "black"))
+    (t ()))
+  "Face for tooltips."
+  :group 'tooltip)
+
+
 (defcustom tooltip-gud-tips-p nil
   "*Non-nil means show tooltips in GUD sessions."
   :type 'boolean
@@ -306,17 +311,36 @@
 
 ;;; Displaying tips
 
+(defun tooltip-set-param (alist key value)
+  "Change the value of KEY in alist ALIAS to VALUE.
+If there's no association for KEY in ALIST, add one, otherwise 
+change the existing association.  Value is the resulting alist."
+  (let ((param (assq key alist)))
+    (if (consp param)
+	(setcdr param value)
+      (push (cons key value) alist))
+    alist))
+
+
 (defun tooltip-show (text)
   "Show a tooltip window at the current mouse position displaying TEXT."
   (if tooltip-use-echo-area
       (message "%s" text)
     (condition-case error
-	(x-show-tip text
-		    (selected-frame)
-		    tooltip-frame-parameters
-		    nil
-		    tooltip-x-offset
-		    tooltip-y-offset)
+	(let ((params (copy-sequence tooltip-frame-parameters))
+	      (fg (face-attribute 'tooltip :foreground))
+	      (bg (face-attribute 'tooltip :background)))
+	  (unless (eq 'unspecified fg)
+	    (tooltip-set-param params 'foreground-color fg))
+	  (unless (eq 'unspecified bg)
+	    (tooltip-set-param params 'background-color bg)
+	    (tooltip-set-param params 'border-color bg))
+	  (x-show-tip (propertize text 'face 'tooltip)
+		      (selected-frame)
+		      tooltip-frame-parameters
+		      nil
+		      tooltip-x-offset
+		      tooltip-y-offset))
       (error 
        (message "Error while displaying tooltip: %s" error)
        (sit-for 1)