diff lisp/wid-edit.el @ 85114:5039706521c9

Merge from emacs--rel--22 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-875
author Miles Bader <miles@gnu.org>
date Tue, 09 Oct 2007 08:52:57 +0000
parents e5a68f18fcb9 a577ac572c4b
children 38f922ac20ce 14c4a6aac623
line wrap: on
line diff
--- a/lisp/wid-edit.el	Tue Oct 09 08:44:02 2007 +0000
+++ b/lisp/wid-edit.el	Tue Oct 09 08:52:57 2007 +0000
@@ -405,7 +405,17 @@
     (unless (widget-get widget :suppress-face)
       (overlay-put overlay 'face (widget-apply widget :button-face-get))
       (overlay-put overlay 'mouse-face
-		   (widget-apply widget :mouse-face-get)))
+		   ;; Make new list structure for the mouse-face value
+		   ;; so that different widgets will have
+		   ;; different `mouse-face' property values
+		   ;; and will highlight separately.
+		   (let ((mouse-face-value
+			  (widget-apply widget :mouse-face-get)))
+		     ;; If it's a list, copy it.
+		     (if (listp mouse-face-value)
+			 (copy-sequence mouse-face-value)
+		       ;; If it's a symbol, put it in a list.
+		       (list mouse-face-value)))))
     (overlay-put overlay 'pointer 'hand)
     (overlay-put overlay 'follow-link follow-link)
     (overlay-put overlay 'help-echo help-echo)))
@@ -656,7 +666,9 @@
       (progn (widget-put widget :suppress-face t)
 	     (insert-image image
 			   (propertize
-			    tag 'mouse-face widget-button-pressed-face)))
+                            ;; Use a `list' so it's unique and won't get
+                            ;; accidentally merged with neighbouring images.
+			    tag 'mouse-face (list widget-button-pressed-face))))
     (insert tag)))
 
 (defun widget-move-and-invoke (event)