Mac Tray Icon Question

Jeremy Wood mickleness at gmail.com
Wed Aug 10 14:28:25 UTC 2022


I like that theory, thanks. Is it possible to make/assign a template 
image in Java?

Glancing around just now didn’t turn up any leads. Specifically:

In CTrayIcon#updateNativeImage(Image), we call:
CImage.getCreator().createFromImage(image, observer)

… and that method appears to convert ‘image’ (a java.awt.Image) into a 
TYPE_INT_ARGB_PRE formatted int array. The word “template” isn’t in the 
CImage class at all. So even if I had the imagePtr I don’t see how I can 
toggle the template attribute.

Regards,
  - Jeremy

------ Original Message ------
>From "Alan Snyder" <javalists at cbfiddle.com>
To "Jeremy Wood" <mickleness at gmail.com>
Cc "client-libs-dev at openjdk.org" <client-libs-dev at openjdk.org>
Date 8/10/2022 8:25:11 AM
Subject Re: Mac Tray Icon Question

>I suspect the images that work are template images, rather than pairs 
>of images.
>
>See 
>https://developer.apple.com/documentation/appkit/nsimage/1520017-template
>
>
>
>>On Aug 9, 2022, at 7:12 PM, Jeremy Wood <mickleness at gmail.com> wrote:
>>
>>On Macs the tray can present black or white icons, depending on the 
>>color of the desktop underneath the menubar.
>>
>>For example:
>>
>><galpmnvf.png>
>>
>><qtqoidmn.png>
>>
>>Most icons switch from a black icon to a white icon as needed. A few 
>>3rd party app icons do not switch to a white icon against the black 
>>background (for ex: Evernote). And interestingly: Apple’s Airdrop icon 
>>(the concentric circles shaped like a sideways pacman) also appears to 
>>do the wrong thing too.
>>
>>Is there a way in a Java desktop app to set up a tray icon that can 
>>toggle between white and black icons as needed?
>>
>>Obviously we’d love it if this “just worked” without further 
>>intervention by inverting our icon, but we’d also be happy if a 
>>solution involved adding a PropertyChangeListener somewhere to 
>>identify the menubar change and we could update the tray icons 
>>ourselves.
>>
>>For ex:
>>If I change the highlight/accent color (in “System Preferences -> 
>>General”), then 8 UIManager Colors change (including “textHighlight”, 
>>“Button.light”, etc.) as of JDK 18. As far as I can tell: there is no 
>>similar model to identify when the menubar changes colors.
>>
>>For now we’ve made a work-around by using the Robot class to grab a 
>>pixel from the Apple menu icon every few seconds to determine if it’s 
>>light or dark.
>>
>>Is there an existing way to resolve this we don’t know about?
>>
>>Or if not: is anyone reading this with “author” status interested in 
>>helping write this up as an openjdk bug?
>>
>>Regards,
>>  - Jeremy
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20220810/41db5d26/attachment.htm>


More information about the client-libs-dev mailing list