How can I programmatically force a mac window to be the front window? I have the window handle, and want to ensure that my window is displayed above all other windows. I can use both Carbon & Cocoa for this.
How to force Mac window to foreground?
Are you talking about a window in your own program? Or do you want to deal with other app's windows? –
Reconstruct
Raymond Chen wrote about this very problem, when he asked the important question: "What if two programs did this?" Once you realize that, you'll understand that never can force this, only request this. –
Aura
For Cocoa, you can set the window level using:
[window setLevel:NSFloatingWindowLevel];
A floating window will display above all other regular windows, even if your app isn't active.
If you want to make your app active, you can use:
[NSApp activateIgnoringOtherApps:YES];
and
[window makeKeyAndOrderFront:nil];
If you can (32 bit only) use kOverlayWindowClass:
WindowRef carbon_window = NULL;
CreateNewWindow( kOverlayWindowClass , ... , &carbon_window );
// if you need cocoa:
NSWindow *cocoa_window = [[NSWindow alloc] initWithWindowRef:carbon_window];
Otherwise create an NSWindow and set the window level to kCGOverlayWindowLevel
.
Note that this will be above the dashboard as well. If you want to be below the dashbord use kCGUtilityWindowLevel.
© 2022 - 2024 — McMap. All rights reserved.