4

I have an NSStatusItem with an attached menu that I'm triggering with a global hotkey. If I click the menu item I get the highlight as usual, if I use the hotkey the highlight isn't triggered. Does anyone know a way to trigger the highlight?

I've tried overriding the view and drawing it myself in drawRect but if there is a nicer way to do it I'd love to hear. Thanks!

The reason I don't want to override the view is then I have to handle icon positioning, clicking to activate the menu, etc.

twe4ked
  • 2,832
  • 21
  • 24
  • [[statusItem button] setHighlighted:true]? – Luke Sep 23 '14 at 17:13
  • As far as I can see, the [comment](http://stackoverflow.com/questions/24854217/highlight-nsstatusitem-when-triggered-programmatically#comment40719513_24854217) by @Luke is the correct answer. It should be added as an answer and marked as correct :) – lindon fox Jan 01 '15 at 12:08

2 Answers2

2

This does the magic in macOS 10.13.6 with Xcode 10.

guard let m = statusItem.menu else { return }
statusItem.button?.isHighlighted = true
statusItem.popUpMenu(m)
statusItem.button?.isHighlighted = false

Please note that last line is required to de-highlight the icon when the menu gets closed.

eonil
  • 83,476
  • 81
  • 317
  • 516
1

Use:

[[statusItem button] highlight:true];

As it turns out setHighlighted: and highlight don't do the same thing:
NSStatusBarButton keep highlighted

Community
  • 1
  • 1
Luke
  • 4,908
  • 1
  • 37
  • 59