Subject: Re: bug#8250: 23.3; set-backrgound-color sets incorrect color

From: "David J. Biesack" <[email-masked]>
Date: Wed, 16 Mar 2011 10:15:55 -0400

Eli Zaretskii <[email-masked]> writes:

>> From: "David J. Biesack" <[email-masked]>
>> CC: <[email-masked]>
>> Date: Tue, 15 Mar 2011 08:43:08 -0400
>> 
>> 
>> There are 167 colors listed, only 9 "gray" colors:
>
> ??? I have no less than 680 colors listed, including 101 gray colors
> named gray0 to gray100, and several others like those you mention.
>
> What's going on that system from the color point of view?  How many
> colors do you have in your settings?
>
> Can you step through list-colors-display with Edebug, and see why you
> get so few colors listed?

My system is running dual monitors at 1600x1200x32bit
primary display is a VGA connection; second is DVI-D 

After starting

  runemace -q

then stepping into list-colors-display and defined-colors in faces.el
abd xw-defined-colors in term/w3-win.el  I've isolated the problem
to w32-color-map 

(display-visual-class)
true-color

(length w32-color-map)
271

w32-color-map
(("SystemMenuBar" . 11055248) ("SystemMenuHilight" . 0) ("SystemGradientInactiveTitle" . 10789024) ("SystemGradientActiveTitle" . 6831878) ("SystemHotTrackingColor" . 14399637) ("SystemButtonAlternateFace" . 12632256) ("SystemInfoWindow" . 12632256) ("SystemInfoText" . 6831878) ("SystemButtonLight" . 3947580) ("SystemButtonDkShadow" . 0) ("SystemButtonHilight" . 10329501) ("SystemInactiveTitleText" . 15066597) ...)

(assoc "grey30" w32-color-map)
nil
(assoc "black" w32-color-map)
("black" . 33554432)

However:

(color-supported-p "grey30" (selected-frame) t)
t

(defvar w32-color-map) is defined in w32fns.c
so I can't step into that to find out where the colors are coming from.

I did find another Windows 7 system where the gray colors *are* working
and w32-color-map has 783 elements:

(assoc "grey30" w32-color-map)
("grey30" . 5066061)

That is a laptop with 32 bit color 1440x900 (single monitor) 
running Windows 7 x64

As a workaround, I can copy the full 32-color-map from the
other system and eval it on this system, then
(set-background-color "grey10")
(set-background-color "grey20")
(set-background-color "grey30")
all work as expected (I use the same Windows color theme
on both, so the System* colors in w32-color-map are OK for me)

I don't know why w32-color-map (w32fns.c) is so short on my system.
(I've have rebooted - no change.)

-- 
David J. Biesack, SAS
SAS Campus Dr. Cary, NC 27513
www.sas.com    (919) 531-7771