>From 921a907b9ccf990bb0885160fde37a173d237c22 Mon Sep 17 00:00:00 2001 From: Matthias Dahl Date: Wed, 2 Apr 2014 15:50:42 +0200 Subject: [PATCH 4/4] lisp/faces.el: Fix reverse-video for X window system During frame creation, the initial values for the default face are set-- including swapped fg/bg colors in the reverse-video case. Commit 15e14b165dcbc6566a0459b0d5e66f89080f569e introduced a bug that overwrote those defaults by accident. Previously: If reverse-video was active, the default face was no longer synced with any X resources. The aforementioned commit placed make-face-x-resource-internal in face-spec-recalc and called it unconditionally there, which overwrote, amongst other things, the proper set defaults. To fix this, make-face-x-resource-internal now makes sure that it doesn't touch the default face if reversed video is given-- as it was done previously. Fixes bug #16434. --- lisp/faces.el | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lisp/faces.el b/lisp/faces.el index 28205d2..f14ffc7 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -354,10 +354,12 @@ FRAME nil or not specified means do it for all frames. If `inhibit-x-resources' is t, this will do nothing." (unless inhibit-x-resources - (if (null frame) - (dolist (frame (frame-list)) - (set-face-attributes-from-resources face frame)) - (set-face-attributes-from-resources face frame)))) + (dolist (frame (if (null frame) (frame-list) (list frame))) + ;; `x-create-frame' already took care of correctly handling + ;; the reverse video case-- do _not_ touch the default face + (unless (and (eq face 'default) + (frame-parameter frame 'reverse)) + (set-face-attributes-from-resources face frame))))) @@ -2063,10 +2065,6 @@ frame parameters in PARAMETERS." (progn ;; Initialize faces from face spec and custom theme. (face-spec-recalc face frame) - ;; X resources for the default face are applied during - ;; `x-create-frame'. - (and (not (eq face 'default)) window-system-p - (make-face-x-resource-internal face frame)) ;; Apply attributes specified by face-new-frame-defaults (internal-merge-in-global-face face frame)) ;; Don't let invalid specs prevent frame creation. -- 1.9.1