It appears that CTrayIcon has an option to use template images. apple.awt.enableTemplateImages
So, either this option is off or your image does not satisfy the rules for template images. > On Aug 10, 2022, at 7:28 AM, Jeremy Wood <[email protected]> wrote: > > 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" <[email protected] <mailto:[email protected]>> > To "Jeremy Wood" <[email protected] <mailto:[email protected]>> > Cc "[email protected] <mailto:[email protected]>" > <[email protected] <mailto:[email protected]>> > 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 >> <https://developer.apple.com/documentation/appkit/nsimage/1520017-template> >> >> >> >>> On Aug 9, 2022, at 7:12 PM, Jeremy Wood <[email protected] >>> <mailto:[email protected]>> 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
