Cmd + click to move status item - objective-c

The built in battery, wi-fi, sound, etc, Apple supplied status items, can be dragged to any position on the menu by using cmd + click and drag:
How can I support similar functionality in my own status item?

There are two ways to get menus on the right side of the menu bar. The officially supported way is creating an NSStatusItem in your app. The other ways is creating an NSMenuExtra. You've noticed one difference: NSStatusItem menus are fixed in place, whereas the menu extras can be moved around by cmd-dragging them.
The other major difference, and the reason 3rd-party menu extras are not officially supported, is that unlike status items (which run as separate applications), menu extras are loaded into the address space of the SystemUIServer process. That means if they go haywire and crash, they can take down the UI.
You can see the Menu Extras installed on your system at /System/Library/CoreServices/Menu Extras. It may still be possible to create your own and have the OS load them, but you will run into problems if you try to ship the result. Better to go to bugreport.apple.com and let them know that NSStatusItems ought to be draggable.
Wikipedia has more info on Menu Extras, including some links to a tutorial on building your own.

Related

Disable certain suggestions in PhpStorm search

I’m not sure what are these called:
I mean the Show code with my wire stats, Show Memory indicator, etc..
Basically, I’m mostly interested so this autocomplete menu would only show files, or at the very least would prioritise files. How can this be achieved?
I’m in version 2022.2.1.
That popup is called Search Everywhere and you are on an "All" tab that includes combined results from Classes, Files, Symbols, Actions etc.
Either manually switch to the desired tab (using a mouse or by hitting Tab needed number of times) or invoke this popup for the desired search from the start. For that just use the shortcut for Navigate | File... (Ctrl + Shift + N here on Windows keymap).
https://www.jetbrains.com/help/idea/searching-everywhere.html
Found the solution.
These things are called Actions, and the can be disabled in menu that appears after clicking the small funnel icon in the top right:
I tested, these changes seem to 'survive' a restart.
Yes, at the moment it is remembered only during the session.
https://youtrack.jetbrains.com/issue/IDEA-229285 -- watch this ticket (star/vote/comment) to get notified about any progress.
(P.S. The same happens with Find in Files popup (IDEA-143972) and a few others similar popups as well)

OS X menubar extras + Apple HIG + UX pattern in conflict - when quit isn't quit

A quick search of Apple's Human Interface Guidelines and Developer Library yields an unequivocal guideline:
Users, and not apps, place menu bar extras in the menu bar.
Anecdotal data backs that up: submitting an app where - upon quit of a dock process/main view, the extra is left running - yields a tidy rejection.
Now - I'm a User experience designer (UXD) who typically plays, I mean, works in the mobile and web space. So please pardon my lack of Obj C chops, thanks.
I understand well the guideline and behavior/pattern: apps like Skitch, Wunderlist, Evernote, et al however very clearly leave the extra (often termed HelperApp) running in the menu bar on quit of main app. They all, do offer explicit user toggle of this w/i preferences.
There's no additional Human Interface Guidelines w/ specifics around handling this requirement for user control. Must this be included in onboarding? Dialog at 1st quit? Again: I can speak to best behavior UX wise, but my (very senior) dev wants the mandate - how are others not getting rejected?
Focus: what means of user control is/are mandated to avoid rejection?
Known/given: include in preferences
Other: ???
After hours of searching online and Apple Dev guidelines, I humbly bring this question here. There simply isn't time to play a carnival game of requirements: guess, get rejected, repeat. Thanks in advance.
Do you have a button somewhere in your user interface that adds the menu extra to the menu bar? Or does your app just do it automatically without the user telling it to do so?
I think that's the distinction, your app must only add an extra when instructed to do so. Also if the primary purpose of your app is to create a menu extra (eg, I have one that puts a calendar in the menu bar) then just launching the app is an implicit instruction, so it can be added automatically.
Ultimately, this rule really is vague and can't be clarified. What it comes down to, is that there should not be many menu extras in a user's menu bar unless the user explicitly chooses to have them. So unless your app really needs a menu extra, you must disable it by default.
If you think the reviewer should have allowed your app through then reply to the rejection explaining your position. I've had an app change to approved once after doing that.
If they still reject your app, then you can appeal the app rejection.
Alternatively, just disable the menu extra by default and have a button somewhere to add it to the menu bar.
Also, all of this assumes you are using NSStatusItem and not the "real" menu extra system — which is a private API. Only NSStatusItem menu extras can be placed in the app store as far as I know.

IntelliJ IDEA secondary windows lack a menu. How can i enable it?

I'm a frontend developer and I have a multi-monitor setup. I have HTML code on one monitor and CSS code on another monitor.
To achieve that, I drag a tab out of IntelliJ IDEA window, so that the tab opens in a separate window.
My problem is that the secondary window lacks a menu:
Menu access hot keys (e.g. Alt+V) won't work. I can't make use of the main window's menu either because when I click it, the focus switches to the active tab of the main window.
How do I access the menu when I'm working in IDEA's secondary window?
This feature is currently not available in IntelliJ IDEA.
The alternatives I could think of to do what you want:
Consider raising a feature request on http://youtrack.jetbrains.com/
Do you think it's possible that you might not miss the menu on the detached tab if instead of accessing functionality through the menu, you did the same through keyboard shortcuts?
Personally, being a keyboard junkie, I have not felt the lack of a menu on the detached tab.
Even though Eclipse allows you to create a new window for the same workspace, I had some issues with it ( for eg: if you set a breakpoint in a file in Window 1, and started a debug session from Window 2, then the file would be re-opened in Window 2 when the breakpoint is hit) and feel that the Intellij IDEA implementation works better.
(Warning! The most Hacky suggestion) Assuming you are using Windows, there are a number of ways in which you could extend the single IntelliJ window across the two monitors and then instead of detaching a tab, you could do a 'Split Vertically' in that single window. With the slider between the tabs positioned just right, it will seem you have two windows opened with each of them having a menu.
To extend a window across two monitors see : How can you maximize a window on to dual monitors in Windows 7 or use one of the multi-monitor tools listed here or here ( I vaguely recall that it was the latter 'zbar' that I used to extend a window during my eclipse days).
Believe it or not, I have done this with Eclipse when I was sick of guessing where the file-with-the-breakpoint would open up :)

IntelliJ IDEA back/forward with mouse

I want to move back/forward between editor tabs, using the two additional ("virtual") mouse buttons I have (RAZER DEATHADDER BLACK).
In Eclipse it's possible by default.
In IDEA I go to File->Settings->Keymap->Main menu->Window->Editor Tabs.
There I have Select Next Tab with the deault Alt+Right shortcut.
Then I open the Add Mouse Shortcut.
In that dialog I try to assign the back button of my mouse but without success. It doesn't react at all.
Anyway, googling a bit I've found this thread. I quote Alexey Gopachenko which seems to be an employee of IntelliJ:
As stated above - we can't support buttons if JDK on your platform
does not support them - and obviously it does not.
Anyway, that is totally wrong. My platform does support these keys - I actually work with them, on the same platform, on Eclipse and any other app, so it's IDEA who ignores them.
I'd appriciate a solution - how do I assign these back/forward mouse buttons?
UPDATE #1
I've found out that IDEA uses its own JAVA distribution (C:\Program Files (x86)\JetBrains\IntelliJ IDEA 11.1.4\jre on Windows 7), instead of the system's one - WHY?!
I'm almost SURE that is the reason I cannot use extended mouse buttons.
I've tried to trick IDEA by creating a custom Windows shortcut. Didn't work. I've also tried to create a SYMLINK in windows to my other, system-wide JRE distribution. Didn't work as well.
If someone come up with an idea on how to make it work with the system's JRE instead of its own - I think that'd solve the issue.
UPDATE #2
The above update #1 is not the issue.
I also had the same problem under OS X El Capitan. I just tried to add a new Keyboard-Shortcut and pressed than the Button 4 on the mouse and this worked.
Back/Forward mouse shortcuts work fine for me with Razer Mamba mouse, for example Back action is assigned to Button4 Click and I can confirm that it is recognized in this dialog when I click on the Click Pad area:
If it doesn't work with your mouse for some reason, you can try to workaround the problem using the Razer Configurator macro or key assignments:
Use the assigned key in IDEA keymap settings instead of the mouse shortcut.
Note that Eclipse is SWT based while IDEA is Swing based, so mouse event management is completely different. If JDK cannot recognize your device button clicks, it will not work in any Java Swing applications (NetBeans, JEdit, etc). In some cases running IDEA under a more recent JDK version may help (if support for your device was added in the newer JDK release).
I'm experiencing the exact same thing suddenly.
I realized my most recent change was to start using idea64.exe rather than idea.exe.
I switched back, and my mouse buttons are working fine again.
So, while this is not a complete answer, it seems as if it has something to do with the 64-bit version.
If the Razer driver's button mapping feature doesn't allow different mappings for a particular program, you can just assign the buttons to the mouse button number choices (mouse button 4 / mouse button 5) and then install a third party app that does support mappings for particular programs, e.g. https://superuser.com/questions/562972/how-to-map-bind-mouse-button-as-keyboard-button-in-windows-7
This question helped me although I have a Logitech Marathon Mouse M705, so I thought that I would share the solution in case other Logitech owners was in search for this.
I have a similar problem with a Logitech mouse and idea64.exe
Fortunately their SetPoint software allows for program specific settings.
This setting will have to be deleted and then reconfigured whenever you update IntelliJ and get a new idea64.exe :-)
I am experiencing a very similar problem and wanted to share my findings. I just bought a new Logitech M705 mouse. Within intelli-j the scroll right and scroll left buttons do not work. The forward and backward buttons also do not work.
I typically run intelli-j as administrator because I need higher privileges to run various tomcat services. When logging in as that user (rather than right clicking and selecting run as admin) all the buttons work! Also, when running as my normal user all the buttons work.
Also very curious is that I have an older generation Logitech mouse (same model, M705). This mouse has no problems with the scroll buttons and forward-back.
My solution for now is to use intelli-j as the user I am logged in as.
Check out this little tutorial from BetterTouchTool here. Basically for some mice (like Logitech ones) using the settings application they come with you can map default button actions to clicks and in doing so set a button number and use it as normal.
This works for my Logitech Performance MX mouse.
You can add mouse shortcuts, just click on an action in keymap and add mouse shortcut.
Alternatively Ctrl+Tab brings up switcher, which may be less clicks to navigate.

Squeak System Browser Questions

I am using (a school modified version of) the "Squeak By Example" (SBE) image for a OOP/OOD class. However, my System Browser is missing a few features that appear in SBE. I assume there are some configuration options that can get them back for me, but I can't find them yet.
My questions are:
1) How do I get the buttons back? In the bottom pane there should be a bunch of button (browse, senders, implementors, versions, ..., source). My buttons are missing.
2) How do I get the small workspace area above the buttons to appear? There is supposed to be an area that I can type in, below the top panes, and above the buttons, but it doesn't appear.
Thanks in advance!
Robert
Edit - I did fool around in the Preferences Browser and tried a lot of settings. I managed to make the buttons come back and then later got that small (unknown name) workspace pane back, but I have no idea how. I have tried to systematically turn stuff off again to find out what setting(s) controlled what, but I was unable to determine what controlled either problem. So even though I have it working, I would like some squeak/smalltalk knowledgeable person to let me know how to control these as it might help me learn...
"In the bottom pane there should be a bunch of button (browse, senders, implementors, versions, ..., source). " -- switch on the optionalButtons preference in the preferences browser.
The "area that I can type in, below the top panes, and above the buttons, but it doesn't appear" sounds like the annotation pane - this gives you summary information about the method you're currently viewing, and it's controlled by the annotationPanes preference. Alternatively you may be referring to the Mercury Panel which is used for fast navigation to other classes and methods; this is (of course :-) controlled by the mercuryPanel preference.
If you've been messing around, you may also find that you now have an incorrect system browser selected. Squeak has a choice of browsers which can act as the System Browser. You can choose between them by clicking the menu button on the System Browser and selecting "Choose new default Browser". Open a new browser window to see what effect this has had.
You may also want to try a Pharo image which has everything configured the way you want by default.
Do you have access to the Preferences Browser? It should be in the main system menu. You can alter all sorts of things via this browser, including which buttons appear in teh system browser?