changeset 35069:d19eadb47c76

(tooltip-cancel-delayed-tip) (tooltip-start-delayed-tip): Renamed from tooltip-disable-timeout and tooltip-add-timeout. (tooltip-show): Set border color from faces's foreground. (tooltip-show-help-function): If called with the same help string as last time, do nothing. (tooltip-help-tips): Don't set tooltip-help-message to nil.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 04 Jan 2001 20:38:02 +0000
parents e6fe439553cf
children 94bdeddc5380
files lisp/tooltip.el
diffstat 1 files changed, 22 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/tooltip.el	Thu Jan 04 20:34:40 2001 +0000
+++ b/lisp/tooltip.el	Thu Jan 04 20:38:02 2001 +0000
@@ -1,6 +1,6 @@
 ;;; tooltip.el --- Show tooltip windows
 
-;; Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
 
 ;; Author: Gerd Moellmann <gerd@acm.org>
 ;; Keywords: help c mouse tools
@@ -247,14 +247,14 @@
     delay))
 
 
-(defun tooltip-disable-timeout ()
+(defun tooltip-cancel-delayed-tip ()
   "Disable the tooltip timeout."
   (when tooltip-timeout-id
     (disable-timeout tooltip-timeout-id)
     (setq tooltip-timeout-id nil)))
 
 
-(defun tooltip-add-timeout ()
+(defun tooltip-start-delayed-tip ()
   "Add a one-shot timeout to call function tooltip-timeout."
   (setq tooltip-timeout-id
 	(add-timeout (tooltip-delay) 'tooltip-timeout nil)))
@@ -305,7 +305,7 @@
   (tooltip-hide)
   (when (car (mouse-pixel-position))
     (setq tooltip-last-mouse-motion-event (copy-sequence event))
-    (tooltip-add-timeout)))
+    (tooltip-start-delayed-tip)))
 
 
 
@@ -330,11 +330,11 @@
 	(let ((params (copy-sequence tooltip-frame-parameters))
 	      (fg (face-attribute 'tooltip :foreground))
 	      (bg (face-attribute 'tooltip :background)))
-	  (unless (eq 'unspecified fg)
-	    (setq params (tooltip-set-param params 'foreground-color fg)))
-	  (unless (eq 'unspecified bg)
-	    (setq params (tooltip-set-param params 'background-color bg))
-	    (setq params (tooltip-set-param params 'border-color bg)))
+	  (when (stringp fg)
+	    (setq params (tooltip-set-param params 'foreground-color fg))
+	    (setq params (tooltip-set-param params 'border-color fg)))
+	  (when (stringp bg)
+	    (setq params (tooltip-set-param params 'background-color bg)))
 	  (x-show-tip (propertize text 'face 'tooltip)
 		      (selected-frame)
 		      params
@@ -350,7 +350,7 @@
 (defun tooltip-hide (&optional ignored-arg)
   "Hide a tooltip, if one is displayed.
 Value is non-nil if tooltip was open."
-  (tooltip-disable-timeout)
+  (tooltip-cancel-delayed-tip)
   (when (x-hide-tip)
     (setq tooltip-hide-time (float-time))))
 
@@ -502,22 +502,27 @@
   (let ((previous-help tooltip-help-message))
     (setq tooltip-help-message msg)
     (cond ((null msg)
+	   ;; Cancel display.  This also cancels a delayed tip, if
+	   ;; there is one.
 	   (tooltip-hide))
-	  ((or (not (stringp previous-help))
-	       (not (string= msg previous-help)))
+	  ((equal previous-help msg)
+	   ;; Same help as before (but possibly the mouse has moved).
+	   ;; Keep what we have.
+	   )
+	  (t
+	   ;; A different help.  Remove a previous tooltip, and 
+	   ;; display a new one, with some delay.
 	   (tooltip-hide)
-	   (tooltip-add-timeout))
-	  (t
-	   (tooltip-disable-timeout)
-	   (tooltip-add-timeout)))))
+	   (tooltip-start-delayed-tip)))))
 
 
 (defun tooltip-help-tips (event)
   "Hook function to display a help tooltip.
+This is installed on the hook `tooltip-hook', which is run when
+the the timer with ID `tooltip-timeout-id' fires.
 Value is non-nil if this function handled the tip."
   (when (stringp tooltip-help-message)
     (tooltip-show tooltip-help-message)
-    (setq tooltip-help-message nil)
     t))