[7u4] Request for approval for 7124530 (original) (raw)

[7u4] Request for approval for 7124530 - What is background color of AWT component? (And foreground, for that matter)

Sergey Bylokhov sergey.bylokhov at oracle.com
Fri Jan 20 05:21:39 PST 2012


18.01.2012 0:29, Mike Swingler пишет:

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:

Hello, 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/viewbug.do?bugid=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[javaawtSystemColorINACTIVECAPTION] = [NSColor grayColor]; sColors[javaawtSystemColorINACTIVECAPTIONTEXT] = [NSColor grayColor]; sColors[javaawtSystemColorINACTIVECAPTIONBORDER] = [NSColor grayColor]; - sColors[javaawtSystemColorWINDOW] = [NSColor grayColor]; + const CGFloat color = (CGFloat)0xEE/(CGFloat)0xFF; + sColors[javaawtSystemColorWINDOW] = [NSColor colorWithCalibratedRed:color green:color blue:color alpha:1.0f]; sColors[javaawtSystemColorWINDOWBORDER] = [NSColor windowFrameColor]; sColors[javaawtSystemColorWINDOWTEXT] = [NSColor windowFrameTextColor]; sColors[javaawtSystemColorMENU] = [NSColor controlBackgroundColor]; Why aren't you just using [NSColor windowBackgroundColor]? Only selectedControlColor and selectedTextBackgroundColor are supported. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DrawColor/Tasks/SystemColors.html#//appleref/doc/uid/20000790 As I understand thats why swing didnt 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. On jdk 6 it works with swing components, because they use com.apple.laf.AquaNativeResources$CColorPaintUIResource with RGB[r=238,g=238,b=238] instead of SystemColor.WINDOW with RGB[r=255,g=255,b=255]. I assume that SystemColor.WINDOW is not used in jdk 6. Does +[NSColor windowBackgroundColor] not give you the correct RGB value? Yes. It return white color[r=255,g=255,b=255]. Regards, Mike Swingler Apple Inc.

-- Best regards, Sergey.



More information about the macosx-port-dev mailing list