[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: frame-set-background-mode changes frame background forspecial-displa
From: |
Drew Adams |
Subject: |
RE: frame-set-background-mode changes frame background forspecial-display frames |
Date: |
Mon, 3 Apr 2006 08:09:36 -0700 |
The value of that :background attribute is the default
background for `default-frame-alist' - that is, for
non-special frames. So, what happens is that the
`default' face for the new, special frame has its
background set to the default value of the default face for the
default-frame-alist.
That seems like the right thing for it to do.
Why is it correct to use the default background of `default-frame-alist' for
a special-display frame that I explicitly assigned a different background
color?
As I said, in the beginning of an Emacs session, creating a special frame
uses the correct background color. But if I delete the frame and then
redisplay the buffer in a new frame (also special - should be exactly the
same, following my specification), that frame has the default background of
`default-frame-alist', not the special-display background I assigned. And
from then on, `special-display-frame-alist' is not respected.
Changing the background of face `default' is
tantamount to changing the background of the frame itself,
so as soon
as this face-attribute change is made, displaying (frame-parameters
<the new frame>) shows that its background has been changed to the
default background for default-frame-alist.
Yes, that's normal, right?
Why do you consider this wrong? Is it that you do something else to
specify the background for that special display frame?
If so, could you show precisely what?
As I said, I use `special-display-frame-alist' (or, for the *Help*,
*Completions*, and minibuffer frames, `special-display-buffer-names' with
explicit frame properties) to specify the background colors of
special-display frames. I want special frames to *always* have the
backgrounds I assign to them via `special-display-frame-alist' (or
`special-display-buffer-names'). I don't want them to change.
This bug completely breaks the normal assignment of background colors to
special-display frames - my assignments are not respected (or, some are at
first, but then the background is changed).
At the beginning of an Emacs session, `special-display-frame-alist' and
`special-display-buffer-names' seem to be respected. After the code I
detailed gets executed once, however, they are no longer respected.
Note: it is not always the background color of the `default-frame-alist'
that ends up getting used for special-display frames. Sometimes it is the
background color of the previously selected frame. For example, a new
special-display frame might be created with the color of the minibuffer
frame or the *Help* frame, instead of the background color specified by
`special-display-frame-alist'. IOW, the background of one frame is
propagated to the next new frame created, with no attention paid to the
colors specified in `special-display-frame-alist' and
`special-display-buffer-names'.
This is definitely incorrect behavior - `frame-set-background-mode' should
not, as a side effect, also change the background *color*. If this is the
intended behavior, that is, if there is no way to assign background colors
to special-display frames and have those colors continue to be respected,
then I guess I'll never move to Emacs 22, because it is unusable for me in
that case. But in that case I'd be curious to hear *why* this is the
intended behavior.
RE: frame-set-background-mode changes frame background for special-display frames, Drew Adams, 2006/04/07