Show Window without activating (keep application below it active)

I need to show a window (without title bar) above third party applications without my window taking focus.

I have tried using an

NSPanel
and setting enabling non-activating, but that didn't help.

I tried

orderFront:self
, but that didn't help either.

I always needed to add

[NSApp activateIgnoringOtherApps:YES];
because the window wouldn't show otherwise.

I have here a sample project for just this functionality:
http://users.telenet.be/prullen/TopW2.zip

UIElement
is set to
true
in the application's plist file, so there is no dock. You can activate the window by pressing
ALT + SPACE
at the same time. You will see that the app below it looses focus. Any thoughts on how to fix this? I've seen other apps do it so I know it's possible.

Edit: here's the code so far. Remember the window is a non-activating NSPanel. I still need that last

NSApp activateIgnoringOtherApps
line or otherwise it doesn't display. But of course that makes the window the active one.
 _windowController =[[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"];
[[_windowController window] setLevel:NSNormalWindowLevel+1];
[[_windowController window] orderFrontRegardless];
[_windowController showWindow:self];
[NSApp activateIgnoringOtherApps:YES];

I've also subclassed NSPanel and added two methods:

-(BOOL)canBecomeKeyWindow {return NO;}
-(BOOL)canBecomeMainWindow {return NO;}
(I also tried canBecomeKeyWindow return YES and several other levels (for setLevel).


Any ideas?

Posted on Feb 26, 2013 2:06 AM

Reply

There are no replies.

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Show Window without activating (keep application below it active)

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.