Why NSWindow without styleMask:NSTitledWindowMask can not be keyWindow ?

Problem:
I have one window mainWindow and another childWindow added to mainWindow.
childWindow is kind of WindowExt class. This class I define for catch method call
[ NSWindow becomeKeyWindow]
that must be called after
[childWindow makeKeyWindow]
.
If I create childWindow and try to make it keyWindow on next way:

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
 styleMask:NSBorderlessWindowMask | 
 NSTitledWindowMask
 backing:NSBackingStoreBuffered
 defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];

method
[WindowExt becomeKeyWindow]
for childWindow is called - all fine, childWidow become keyWindow.

But if I create childWindow as

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
 styleMask:NSBorderlessWindowMask | 
 backing:NSBackingStoreBuffered
 defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];
without NSTitledWindowMask,
[WindowExt becomeKeyWindow]
for childWindow is never called - childWindow doesn't become keyWindow.

Posted on Feb 9, 2011 5:48 AM

Reply
1 reply
Sort By: 

Feb 9, 2011 10:02 PM in response to iruirc

I solved problem.
On cocoa design windows without title or resize bar cannot become key window by default.

If I want a titleless window to be able to become a key window, need to create a subclass of NSWindow and override -canBecomeKeyWindow as follows:

- (BOOL)canBecomeKeyWindow {
 return YES;
}
Reply

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.

Why NSWindow without styleMask:NSTitledWindowMask can not be keyWindow ?

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