Subject: Re: bug#43837: 28.0.50; [NS] Internal border of inactive frame loses color

From: Alan Third <[email-masked]>
Date: Tue, 6 Oct 2020 21:37:15 +0100

On Tue, Oct 06, 2020 at 10:40:33PM +0300, Andrii Kolomoiets wrote:
> In 'emacs -Q':
> 
> 1. M-: (setq test-frame (make-frame '((left . 50) (top . 50))))
> 2. C-x 5 o
> 3. M-: (set-face-background 'internal-border "blue" test-frame)
> 4. M-: (modify-frame-parameters test-frame '((background-color . "black")))
> 
> Now (face-background 'internal-border test-frame) returns nil.
> If we skip step 2, then the internal border color remains.

This isn't an NS specific problem. Eli actually spotted the bug last
year and put in a FIXME.

I can't think of a good reason for the code to use the selected frame,
but perhaps I'm missing something.

Patch attached.
-- 
Alan Third
>From b5f0e5a1c508a950a13941e15fc4bd1c1a63bceb Mon Sep 17 00:00:00 2001
From: Alan Third <[email-masked]>
Date: Tue, 6 Oct 2020 21:32:55 +0100
Subject: [PATCH] Prevent mixing of faces from different frames (bug#43837)

* lisp/frame.el (frame-set-background-mode): Use the face spec from
the frame that's the target of the function instead of the currently
selected frame.
---
 lisp/frame.el | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/lisp/frame.el b/lisp/frame.el
index 7751ae1303..26b23f8229 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1247,10 +1247,7 @@ frame-set-background-mode
                          (assq face (frame-face-alist))
                          (face-spec-match-p face
                                             (face-user-default-spec face)
-                                            ;; FIXME: why selected-frame and
-                                            ;; not the frame that is the
-                                            ;; argument to this function?
-                                            (selected-frame))))
+                                            frame)))
 		   (push face locally-modified-faces)))
 	    ;; Now change to the new frame parameters
 	    (modify-frame-parameters frame params)
-- 
2.26.1