Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
403 views
in Technique[技术] by (71.8m points)

objective c - How to Highlight the active window and dim the rest windows cocoa app programmatically?

In my Cocoa app I want to Highlight which ever the window is active and dim the rest windows. something like focus window application. Below block is my code.

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 : Added below code partially working but not accurate can some suggest any ideas or views.

NSPoint mouseLocation = [NSEvent mouseLocation];
NSInteger windowNumber = [NSWindow windowNumberAtPoint:mouseLocation belowWindowWithWindowNumber:0];
NSLog(@"windowNumber %lu",windowNumber);
[focusWindowController.window orderWindow:NSWindowBelow relativeTo:windowNumber];
[app activateWithOptions:NSApplicationActivateIgnoringOtherApps];

Instead of

[[FocusWindow defaultHandler].window orderWindow:NSWindowAbove relativeTo:0];

In First Block windowNumberAtPoint:belowWindowWithWindowNumber which gives Frontmost window number with that i am ordering my dimming window below orderWindow:relativeTo the Frontmost window.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...