I trying to create a toolbar that docks on the top of the screen below the OS X menu bar.
I would like no other application’s to be able to overlap my application when they are maximized. I can get the visible frame dimensions using NSScreen’s visibleframe method, but can I adjust the visibleframe to omit the size and position of my application?
The simple answer is that no, you can’t. I think that the only way to change the screen’s
visibleRectwould be to inject code into AppKit and swizzle the method.Even then, it might not do what you want because that method might not be what Apple uses to determine the “safe area” for windows and almost certainly would not work with Carbon apps.
Nothing you do with window levels will change this.
What you could do is use the Accessibility framework to reposition windows if you detect that their frames have changed such that they overlap your toolbar window. Unfortunately, I think you might need use polling for this.