¿Cómo resaltar la ventana activa y atenuar el resto de la aplicación de cacao de Windows mediante programación?
En mi aplicación Cocoa, quiero resaltar la ventana activa y atenuar las ventanas restantes. algo comowindow focus solicitud. Debajo del bloque está mi código.
NSNotificationCenter* center = [[NSWorkspace sharedWorkspace] notificationCenter];
[center addObserver:self selector:@selector(newApplicationDidActive:) name:NSWorkspaceDidActivateApplicationNotification object:nil];
- (void)newApplicationDidActive:(NSNotification *)notification {
NSDictionary* userInfo = notification.userInfo;
NSLog(@"did Active %@", [userInfo objectForKey:NSWorkspaceApplicationKey ]
if ([[NSUserDefaults standardUserDefaults] boolForKey:kUDKeyWindowFocus]) {
NSLog(@"window focus");
[[FocusWindow defaultHandler].window orderWindow:NSWindowAbove relativeTo:0];
}
}
Update: el código agregado a continuación que funciona parcialmente pero no es preciso puede sugerir algunas ideas o puntos de vista.
NSPoint mouseLocation = [NSEvent mouseLocation];
NSInteger windowNumber = [NSWindow windowNumberAtPoint:mouseLocation belowWindowWithWindowNumber:0];
NSLog(@"windowNumber %lu",windowNumber);
[focusWindowController.window orderWindow:NSWindowBelow relativeTo:windowNumber];
[app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
En lugar d
[[FocusWindow defaultHandler].window orderWindow:NSWindowAbove relativeTo:0];
In First Block windowNumberAtPoint: belowWindowWithWindowNumber que proporciona el número de ventana Frontmost con el que estoy ordenando mi ventana de atenuación debajo de orderWindow: relativa a la ventana Frontmost.