GNU bug report logs -
#34715
26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2'
Previous Next
Reported by: Drew Adams <drew.adams <at> oracle.com>
Date: Sun, 3 Mar 2019 01:04:01 UTC
Severity: wishlist
Merged with 32736
Found in version 26.1
Fixed in version 28.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #60 received at 34715 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> The following is the minimal case for reproduction here:
>>
>> (let ((default-frame-alist
>> '((background-color . "red"))))
>> (make-frame))
>>
>> This reliably makes all the faces go AWOL on the new frame. (It doesn't
>> matter what the colour is.)
>
> Shouldn't we copy the parameters alist? Maybe even deep-copy?
Do you mean in this particular test case or in `clone-frame'? If it's
the latter, the list we get is fresh (but not very deep).
If it's this particular test case, then I don't understand what you mean.
> And faces are supposed to be frame-local, so maybe faces also need to
> be copied? Otherwise, you are basically manipulating faces that don't
> "belong" to the frame, no? And likewise with frame's parameters
> alist, I think.
Anyway, debugging further shows that the problem seems to be in
`frame-set-background-mode', but I've yet to isolate what exactly is
triggering the bug.
(dolist (face (face-list))
(and (not (get face 'face-override-spec))
[...]
(face-spec-match-p face
(face-user-default-spec face)
frame)))
(push face locally-modified-faces)))
;; Now change to the new frame parameters
(modify-frame-parameters frame params)
;; For all unmodified named faces, choose face specs
;; matching the new frame parameters.
(dolist (face (face-list))
(unless (memq face locally-modified-faces)
(face-spec-recalc face frame)))))))))
The face-spec-recalc messes up the face... but so does the call to
face-spec-match-p, apparently?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 3 years and 257 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.