On Mon, 30 Nov 2020 01:16:43 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

>> [JDK-8252015: [macos11] java.awt.TrayIcon requires updates for template 
>> images](https://bugs.openjdk.java.net/browse/JDK-8252015)
>> 
>> ### Problem
>> According to Apple's human interface guidelines, developers should use 
>> template images for tray icons. This way icons look good when desktop theme 
>> or wallpaper change. On the API level, this means setting the 
>> `NSImage::isTemplate` flag. Currently there's no way in Java to set this 
>> flag. Even if one uses a template (black and transparent pixels only) image, 
>> MacOS will treat it as regular image. As a result, the image will not be 
>> visible when using dark theme.
>> 
>> ### Solution:
>> * Add a new system property, `java.awt.enableTemplateImages`, to indicate 
>> that template images are being used by tray icons.When this property is set, 
>> all tray icon images are treated as templates. It's the developers' 
>> responsibility to ensure their images are indeed templates. This property 
>> allows us to avoid new API and accidental behavior changes
>> * Value of this property is passed from Java into `NSImage::setTemplate`
>> * We need the tray icon image rendered by MacOS, so we use a button (rather 
>> than a view) to host the image
>> 
>> To do after CSR approval:
>> - [ ] Rename property `java.awt.`
>> - [ ] Add `TrayIcon` javadoc, use `@systemProperty` tag there
>
> src/java.desktop/macosx/classes/sun/lwawt/macosx/CTrayIcon.java line 197:
> 
>> 195: 
>> 196:     void updateNativeImage(Image image) {
>> 197:         boolean imageTemplate = 
>> Boolean.parseBoolean(System.getProperty("sun.awt.enableTemplateImages", 
>> "false"));
> 
> "sun.awt.enableTemplateImages" -> "apple.awt.enableTemplateImages"

The impl block in the java.awt.TrayIcon class?

-------------

PR: https://git.openjdk.java.net/jdk/pull/481

Reply via email to