emacs-pretest-bug
[Top][All Lists]
Advanced

[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.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]