Request for review: 7124530 What is background color of AWT component? (And foreground, for that matter) (original) (raw)

Sergey Bylokhov sergey.bylokhov at oracle.com
Tue Jan 10 09:07:50 PST 2012


Hi Anthony.

10.01.2012 20:51, Anthony Petrov wrote:

Hi Sergey,

src/macosx/classes/sun/lwawt/LWWindowPeer.java 140 if (!target.isBackgroundSet()) { 141 target.setBackground(SystemColor.window); 142 } else { 143 // first we check if user provided alpha for background. This is 144 // similar to what Apple's Java do. 145 // Since JDK7 we should rely on setOpacity() only. 146 // this.opacity = c.getAlpha(); 147 // System.out.println("Delegate assigns alpha (we ignore setOpacity()):" 148 // +this.opacity); 149 } This code has been moved from CPlatformWindow as is, so it can be reused later by CPlatformEmbeddedFrame. A couple of questions regarding this piece of code: 1. Why do we need the else{} branch here? Are we going to use it? How? Should the comment explain this future use? 2. What do you mean by saying "we should rely on setOpacity() only"? The alpha value of the background color and the alpha value returned by getOpacity() are different kinds of opacity: the former affects the background surface of the window only, whilst the latter affects the entire window's surface including any content explicitly painted on top of the background. -- best regards, Anthony On 1/10/2012 7:33 PM, Sergey Bylokhov wrote: Hi Everyone,

Does anybody have a comments? 29.12.2011 17:34, Sergey Bylokhov wrote: Hi Everyone, This is a fix for some glitches in the code for background/foreground/font properties. 1. SystemColor.window was changed to color which is used by default in swing l&f(Aqua). Changes in AquaImageFactory.java and CSystemColors.m. Now most of the awt components use this color as default. 2. set** methods were moved from LWWindowPeer to LWComponentPeer, because there is an issues when these methods has no effect, because repaint of the component does not happen.For example: - call Label.setbackground which set component background property - call Peer.setBackground - call Delegate.setBackgound - compare passed color with color from Label property, which was set in the first step: changes in LWWindowPeer,LWContainerPeer,LWComponentPeer. 3. List default color was changed to SystemColor.text: changes in LWListPeer.java. 4. LWWIndow target color initialization was moved from CPlatformIndow to LWWindowPeer, so it can be reused later by CPlatformEmbeddedFrame . 5. unnecessary peers set** methods and unnecessary delegate in LWCanvasPeer were removed: changes in LWCanvasPeer.java, LWListPeer.java, LWPanelPeer.java.

Bug: http://bugs.sun.com/bugdatabase/viewbug.do?bugid=7124530 Webrev can be found at: http://cr.openjdk.java.net/~serb/7124530/webrev.00/

-- Best regards, Sergey.



More information about the macosx-port-dev mailing list