]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #16694 with face attributes changed by themes.
authorMatthias Dahl <matthias.dahl@binary-island.eu>
Sat, 22 Mar 2014 08:18:42 +0000 (10:18 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 22 Mar 2014 08:18:42 +0000 (10:18 +0200)
 lisp/faces.el (face-spec-recalc): Doc fix.  Call
 make-face-x-resource-internal earlier, and condition that on
 no-init-from-resources being nil.

lisp/ChangeLog
lisp/faces.el

index 516261666df3bfa20a17f923a9a4d902729ff668..1efd847dc890a8c53aa8b45c049c62188151122b 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-22  Matthias Dahl  <matthias.dahl@binary-island.eu>
+
+       * faces.el (face-spec-recalc): Doc fix.  Call
+       make-face-x-resource-internal earlier, and condition that on
+       no-init-from-resources being nil. (Bug#16694)
+
 2014-03-22  Juanma Barranquero  <lekktu@gmail.com>
 
        * w32-common-fns.el (x-selection-owner-p): Add empty docstring for the
index e008993b49ff7103ce95c6f9c0fb485011a01457..145ac39886899733f92ddacbd8e6dfe19b0a46d2 100644 (file)
@@ -1619,11 +1619,19 @@ function for its other effects."
 
 (defun face-spec-recalc (face frame)
   "Reset the face attributes of FACE on FRAME according to its specs.
-This applies the defface/custom spec first, then the custom theme specs,
-then the override spec."
+After the reset, the specs are applied from the following sources in this order:
+  X resources (if applicable)
+   |
+  (theme and user customization) 
+    or, if nonexistent or does not match the current frame, 
+  (defface default spec)
+   |
+  defface override spec"
   (while (get face 'face-alias)
     (setq face (get face 'face-alias)))
   (face-spec-reset-face face frame)
+  (unless no-init-from-resources
+    (make-face-x-resource-internal face frame))
   ;; If FACE is customized or themed, set the custom spec from
   ;; `theme-face' records.
   (let ((theme-faces (get face 'theme-face))
@@ -1641,8 +1649,7 @@ then the override spec."
       (setq spec (face-spec-choose (face-default-spec face) frame))
       (face-spec-set-2 face frame spec))
     (setq spec (face-spec-choose (get face 'face-override-spec) frame))
-    (face-spec-set-2 face frame spec))
-  (make-face-x-resource-internal face frame))
+    (face-spec-set-2 face frame spec)))
 
 (defun face-spec-set-2 (face frame spec)
   "Set the face attributes of FACE on FRAME according to SPEC."