[7u4] Request for approval for 7124530 - What is background color of AWT component? (And foreground, for that matter)
swingler at apple.com
Tue Jan 17 12:29:37 PST 2012
On Jan 13, 2012, at 10:52 AM, Sergey Bylokhov wrote:
> 13.01.2012 21:31, Mike Swingler пишет:
>> On Jan 13, 2012, at 6:27 AM, Sergey Bylokhov wrote:
>>> 13.01.2012 6:30, Mike Swingler wrote:
>>>> On Jan 12, 2012, at 4:24 AM, Sergey Bylokhov wrote:
>>>>> This is a request to push the following changes to jdk7u-osx.
>>>>> The fix has been reviewed on macosx-port-dev mailing list by Alexander Potochkin.
>>>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7124530
>>>>> Webrev can be found at: http://cr.openjdk.java.net/~serb/7124530/webrev.00/
>>>>> Technical review: http://mail.openjdk.java.net/pipermail/macosx-port-dev/2012-January/002143.html
>>>> I don't understand this part:
>>>> --- old/src/macosx/native/sun/awt/CSystemColors.m 2011-12-28 19:02:19.913935900 +0400
>>>> +++ new/src/macosx/native/sun/awt/CSystemColors.m 2011-12-28 19:02:19.557915600 +0400
>>>> @@ -81,7 +81,8 @@
>>>> sColors[java_awt_SystemColor_INACTIVE_CAPTION] = [NSColor grayColor];
>>>> sColors[java_awt_SystemColor_INACTIVE_CAPTION_TEXT] = [NSColor grayColor];
>>>> sColors[java_awt_SystemColor_INACTIVE_CAPTION_BORDER] = [NSColor grayColor];
>>>> - sColors[java_awt_SystemColor_WINDOW] = [NSColor grayColor];
>>>> + const CGFloat color = (CGFloat)0xEE/(CGFloat)0xFF;
>>>> + sColors[java_awt_SystemColor_WINDOW] = [NSColor colorWithCalibratedRed:color green:color blue:color alpha:1.0f];
>>>> sColors[java_awt_SystemColor_WINDOW_BORDER] = [NSColor windowFrameColor];
>>>> sColors[java_awt_SystemColor_WINDOW_TEXT] = [NSColor windowFrameTextColor];
>>>> sColors[java_awt_SystemColor_MENU] = [NSColor controlBackgroundColor];
>>>> Why aren't you just using [NSColor windowBackgroundColor]?
>>> Only selectedControlColor and selectedTextBackgroundColor are supported.
>>> As I understand that`s why swing didn`t use this color. After the fix awt and swing use one color (before the fix this color was used by swing).
>>> If this color is wrong, now it`s possible to change it in one place.
>> I can assure you that the window background color reports the correct RGB value, even when the background color has changed between OS versions. You static constant will not.
>> We use it today in Java SE 6.
> jdk6 on my system reports white color which is wrong. Can you please check it(testcase attached).
The test works fine in Java SE 6 with JFrames and other components. The bug where you are getting white from a pure AWT Frame is a side effect of something we call the "magic background color", which is not applicable to Java 7.
Does +[NSColor windowBackgroundColor] not give you the correct RGB value?
More information about the jdk7u-dev