I’ve added a menu to my systemStatusBar by this code:
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
And then set its properties. The only different it has with other status items (Volume, DateTime, Wi-Fi, BatteryIndicator, …) is that if I select it and press left or right direction buttons on keyboard I can’t navigate to other Items and like wise if I select another status item and press direction keys it will not select my status item and instead it jumps to another statusItem. I was wondering is there a way to fix this issue or is it standard for non OS statusItems?
The menu bar you see is not a uniform object. The application menu items on the left part belong to the current application. All these MenuItems are children to a common
NSMenuobject.The status bar items on the outmost right belong to the system (Spotlight, Clock, TimeMachine etc.) and either also share a common parent
NSMenuor just have some special privileges.Each custom status bar menu item belongs to its corresponding application and has its own stand alone
NSMenuparent object.Each status menu is – as you know – inserted into a
NSStatusItemwhich belongs to theNSStatusBarobject. Both inherit directly fromNSObjectand (unlikeNSMenu) lack interfaces to determine a status menu’s parents or siblings. Each status bar item it absolutely isolated.So, you can easily navigate with the arrow keys within a
NSMenu, where every item knows its children and parents. Yet, it is not possible to navigate from your status bar menu to any other menu.